Compare commits
No commits in common. "7e8f70a7c239bee64582229314cd94805a9e3649" and "471c043218a939b95d148cf1c8e9637aacefc90a" have entirely different histories.
7e8f70a7c2
...
471c043218
75
api.http
75
api.http
@ -93,6 +93,46 @@ Authorization: {{auth-token}}
|
|||||||
DELETE http://localhost:9001/api/vehicle/KA01HD6667
|
DELETE http://localhost:9001/api/vehicle/KA01HD6667
|
||||||
Authorization: {{auth-token}}
|
Authorization: {{auth-token}}
|
||||||
|
|
||||||
|
### get products
|
||||||
|
GET http://localhost:9001/api/vendor/product
|
||||||
|
Authorization: {{auth-token}}
|
||||||
|
|
||||||
|
### create excel for products
|
||||||
|
POST http://localhost:9001/api/vendor/product/product-excel
|
||||||
|
Authorization: {{auth-token}}
|
||||||
|
|
||||||
|
### get
|
||||||
|
GET http://localhost:9001/api/vendor/product/product-import
|
||||||
|
Authorization: Bearer {{auth-token}}
|
||||||
|
|
||||||
|
### create product
|
||||||
|
POST http://localhost:9001/api/vendor/product
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: {{auth-token}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Shirt",
|
||||||
|
"description": "Black Shirt",
|
||||||
|
"hsnCode": "BSM1XL"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
### update field
|
||||||
|
PATCH http://localhost:9001/api/vendor/product/11
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: {{auth-token}}
|
||||||
|
|
||||||
|
|
||||||
|
### upate a row
|
||||||
|
PUT http://localhost:9001/api/vendor/product/11
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: {{auth-token}}
|
||||||
|
|
||||||
|
|
||||||
|
### delete a row
|
||||||
|
DELETE http://localhost:9001/api/vendor/product/2
|
||||||
|
Authorization: {{auth-token}}
|
||||||
|
|
||||||
### create vendor
|
### create vendor
|
||||||
POST http://localhost:9001/api/vendor/
|
POST http://localhost:9001/api/vendor/
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
@ -319,38 +359,3 @@ Authorization: {{auth-token}}
|
|||||||
"quoteFilters": {}
|
"quoteFilters": {}
|
||||||
}
|
}
|
||||||
|
|
||||||
### CREATE PRODUCT
|
|
||||||
POST http://localhost:9001/api/vendor/product/create
|
|
||||||
Content-Type: application/json
|
|
||||||
Authorization: {{auth-token}}
|
|
||||||
|
|
||||||
{
|
|
||||||
"name" : "aa",
|
|
||||||
"description": "aa",
|
|
||||||
"hsnCode" : "aa",
|
|
||||||
"uom": "NOS"
|
|
||||||
}
|
|
||||||
|
|
||||||
### GET ALL PRODUCTS
|
|
||||||
GET http://localhost:9001/api/vendor/product/getAll
|
|
||||||
Authorization: {{auth-token}}
|
|
||||||
|
|
||||||
### GET PRODUCT BY KEY
|
|
||||||
GET http://localhost:9001/api/vendor/product/of/6
|
|
||||||
Authorization: {{auth-token}}
|
|
||||||
|
|
||||||
### GET PRODUCT BY HSNCODE
|
|
||||||
DELETE http://localhost:9001/api/vendor/product/3
|
|
||||||
Authorization: {{auth-token}}
|
|
||||||
|
|
||||||
### PRODUCT EXCEl
|
|
||||||
GET http://localhost:9001/api/vendor/product/to/excel
|
|
||||||
Authorization: {{auth-token}}
|
|
||||||
|
|
||||||
### EXCEL VALIDATE
|
|
||||||
GET http://localhost:9001/api/vendor/product/valid/excel
|
|
||||||
Authorization: {{auth-token}}
|
|
||||||
|
|
||||||
### EXCEL TO DB (IMPORT)
|
|
||||||
POST http://localhost:9001/api/vendor/product/excelToDb
|
|
||||||
Authorization: {{auth-token}}
|
|
||||||
@ -19,7 +19,6 @@ import io.javalin.Javalin
|
|||||||
import io.javalin.apibuilder.ApiBuilder.*
|
import io.javalin.apibuilder.ApiBuilder.*
|
||||||
import io.javalin.http.ContentType
|
import io.javalin.http.ContentType
|
||||||
import io.javalin.http.Context
|
import io.javalin.http.Context
|
||||||
import io.javalin.http.HandlerType
|
|
||||||
import io.javalin.http.UnauthorizedResponse
|
import io.javalin.http.UnauthorizedResponse
|
||||||
import io.javalin.http.util.NaiveRateLimit
|
import io.javalin.http.util.NaiveRateLimit
|
||||||
import io.javalin.http.util.RateLimitUtil
|
import io.javalin.http.util.RateLimitUtil
|
||||||
@ -33,6 +32,7 @@ import java.util.*
|
|||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import kotlin.jvm.optionals.getOrDefault
|
import kotlin.jvm.optionals.getOrDefault
|
||||||
|
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
val logger = LoggerFactory.getLogger("api")
|
val logger = LoggerFactory.getLogger("api")
|
||||||
val adminRole = Role.Standard(Action.ADMIN)
|
val adminRole = Role.Standard(Action.ADMIN)
|
||||||
@ -80,8 +80,6 @@ fun main(args: Array<String>) {
|
|||||||
TimeUnit.MINUTES
|
TimeUnit.MINUTES
|
||||||
)
|
)
|
||||||
|
|
||||||
if(ctx.method() == HandlerType.OPTIONS) return@before
|
|
||||||
|
|
||||||
val authToken = ctx.getAuthHeader() ?: throw UnauthorizedResponse()
|
val authToken = ctx.getAuthHeader() ?: throw UnauthorizedResponse()
|
||||||
|
|
||||||
|
|
||||||
@ -144,15 +142,29 @@ fun main(args: Array<String>) {
|
|||||||
delete("/{id}", QuotationCtrl::delete, Roles(Role.Explicit(listOf("ROLE_QUOTE_CREATE", "ROLE_ADMIN"))))
|
delete("/{id}", QuotationCtrl::delete, Roles(Role.Explicit(listOf("ROLE_QUOTE_CREATE", "ROLE_ADMIN"))))
|
||||||
}
|
}
|
||||||
path("/product") {
|
path("/product") {
|
||||||
post("/create", ProductCtrl::create, Roles(Role.Explicit(listOf("ROLE_PRODUCT_CREATE", "ROLE_ADMIN"))))
|
post("", ProductCtrl::create, Roles(Role.Explicit(listOf("ROLE_PRODUCT_CREATE", "ROLE_ADMIN"))))
|
||||||
get("/getAll", ProductCtrl::getAll, Roles(Role.Explicit(listOf("ROLE_PRODUCT_VIEW", "ROLE_ADMIN"))))
|
//get("/{hsnCode}", ProductCtrl::get, Roles(Role.Explicit(listOf("ROLE_PRODUCT_VIEW", "ROLE_ADMIN"))))
|
||||||
get("/of/{key}", ProductCtrl::get, Roles(Role.Explicit(listOf("ROLE_PRODUCT_VIEW", "ROLE_ADMIN"))))
|
put(
|
||||||
put("/{id}", ProductCtrl::update, Roles(Role.Explicit(listOf("ROLE_PRODUCT_UPDATE", "ROLE_ADMIN"))))
|
"/{id}",
|
||||||
patch("/{id}", ProductCtrl::patch, Roles(Role.Explicit(listOf("ROLE_PRODUCT_UPDATE", "ROLE_ADMIN"))))
|
ProductCtrl::update,
|
||||||
delete("/{id}", ProductCtrl::delete, Roles(Role.Explicit(listOf("ROLE_PRODUCT_DELETE", "ROLE_ADMIN"))))
|
Roles(Role.Explicit(listOf("ROLE_PRODUCT_UPDATE", "ROLE_ADMIN")))
|
||||||
get("/to/excel", ProductCtrl::prodExcel)
|
)
|
||||||
get("/valid/excel") { ctx -> ctx.json(ExcelRead()) }
|
//patch("/{id}", ProductCtrl::patch, Roles(Role.Explicit(listOf("ROLE_PRODUCT_UPDATE", "ROLE_ADMIN"))))
|
||||||
post("/excelToDb") {ctx -> ctx.json(excelToDb())}
|
delete(
|
||||||
|
"/{id}",
|
||||||
|
ProductCtrl::delete,
|
||||||
|
Roles(Role.Explicit(listOf("ROLE_PRODUCT_DELETE", "ROLE_ADMIN")))
|
||||||
|
)
|
||||||
|
get("", ProductCtrl::getAll, Roles(Role.Explicit(listOf("ROLE_PRODUCT_VIEW", "ROLE_ADMIN"))))
|
||||||
|
post("/product-excel", ProductCtrl::prodExcel)
|
||||||
|
get("/product-import") { ctx -> //ctx.json(ExcelRead())}
|
||||||
|
val fileItem = ctx.uploadedFiles("file")
|
||||||
|
if (fileItem != null) {
|
||||||
|
ctx.result("Data imported successfully!")
|
||||||
|
} else {
|
||||||
|
ctx.result("No file uploaded")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
path("/doc"){
|
path("/doc"){
|
||||||
post("", Document::create, Roles(Role.Explicit(listOf("ROLE_DOC_CREATE", "ROLE_ADMIN"))))
|
post("", Document::create, Roles(Role.Explicit(listOf("ROLE_DOC_CREATE", "ROLE_ADMIN"))))
|
||||||
|
|||||||
@ -444,15 +444,15 @@ data class ProductSearch(
|
|||||||
|
|
||||||
object ProductCtrl {
|
object ProductCtrl {
|
||||||
fun get(ctx :Context){
|
fun get(ctx :Context){
|
||||||
val key = ctx.pathParam("key")
|
val hsnCode = ctx.pathParam("hsnCode")
|
||||||
val product = database.find(Product::class.java, key) ?: throw NotFoundResponse("Product not found for $key")
|
val product = database.find(Product::class.java, hsnCode) ?: throw NotFoundResponse("Product not found for $hsnCode")
|
||||||
|
|
||||||
ctx.json(product)
|
ctx.json(product)
|
||||||
}
|
}
|
||||||
fun getAll(ctx: Context){
|
fun getAll(ctx: Context){
|
||||||
val productList = database.find(Product::class.java)
|
val productList = Session.database.find(Product::class.java)
|
||||||
.findList()
|
.findList()
|
||||||
//.removeAt(4)
|
//.sortedBy { it.hsnCode }
|
||||||
|
|
||||||
ctx.json(productList)
|
ctx.json(productList)
|
||||||
}
|
}
|
||||||
@ -464,7 +464,7 @@ object ProductCtrl {
|
|||||||
|
|
||||||
fun delete(ctx: Context) {
|
fun delete(ctx: Context) {
|
||||||
val id = ctx.pathParam("id")
|
val id = ctx.pathParam("id")
|
||||||
val product = database.deletePermanent(Product::class.java,id)
|
val product = database.delete(Product::class.java, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun patch(ctx: Context) {
|
fun patch(ctx: Context) {
|
||||||
@ -472,7 +472,7 @@ object ProductCtrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun update(ctx: Context) {
|
fun update(ctx: Context) {
|
||||||
//have to implement
|
|
||||||
}
|
}
|
||||||
fun prodExcel(it: Context) {
|
fun prodExcel(it: Context) {
|
||||||
val product = database.find(Product::class.java).findList()
|
val product = database.find(Product::class.java).findList()
|
||||||
|
|||||||
@ -387,7 +387,7 @@ fun ImportFromExcel(fileType: FileType, filePath : String) {
|
|||||||
"nos" -> UOM.NOS
|
"nos" -> UOM.NOS
|
||||||
"ltr" -> UOM.LTR
|
"ltr" -> UOM.LTR
|
||||||
"mtr" -> UOM.MTR
|
"mtr" -> UOM.MTR
|
||||||
else -> UOM.LTR
|
else -> UOM.ALL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -551,31 +551,4 @@ fun CreateExcel(productList: List<Product>): InputStream {
|
|||||||
|
|
||||||
return ByteArrayInputStream(baos.toByteArray())
|
return ByteArrayInputStream(baos.toByteArray())
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fun excelToDb(): List<Product> {
|
|
||||||
val inputStream = FileInputStream("C:\\Users\\vinay\\IdeaProjects\\readymixerp_modules_api_git\\Untitled 1.xlsx")
|
|
||||||
val workbook = WorkbookFactory.create(inputStream)
|
|
||||||
val workSheet = workbook.getSheetAt(0)
|
|
||||||
|
|
||||||
for (row in workSheet) {
|
|
||||||
val cell1Value = row.getCell(0).stringCellValue
|
|
||||||
val cell2Value = row.getCell(1).stringCellValue
|
|
||||||
val cell3Value = row.getCell(2).stringCellValue
|
|
||||||
val cell4Value = row?.getCell(3)?.stringCellValue
|
|
||||||
|
|
||||||
val prod = Product()
|
|
||||||
prod.name = cell1Value
|
|
||||||
prod.description = cell2Value
|
|
||||||
prod.hsnCode = cell3Value
|
|
||||||
prod.uom = when(cell4Value) {
|
|
||||||
"nos" -> UOM.NOS
|
|
||||||
"ltr" -> UOM.LTR
|
|
||||||
"mtr" -> UOM.MTR
|
|
||||||
else -> UOM.ALL
|
|
||||||
}
|
|
||||||
database.saveAll(prod)
|
|
||||||
}
|
|
||||||
val productList = Session.database.find(Product::class.java).findList()
|
|
||||||
return productList
|
|
||||||
}
|
}
|
||||||
@ -29,14 +29,10 @@ data class POFilters (
|
|||||||
val validBefore: LocalDate = maxDate,
|
val validBefore: LocalDate = maxDate,
|
||||||
val refQuotation :String = IGNORE,
|
val refQuotation :String = IGNORE,
|
||||||
) : CustomFilters
|
) : CustomFilters
|
||||||
|
|
||||||
enum class UOMFilter {
|
|
||||||
ALL //fixme: later
|
|
||||||
}
|
|
||||||
data class ProductFilters (
|
data class ProductFilters (
|
||||||
val nameLike :String = IGNORE,
|
val nameLike :String = IGNORE,
|
||||||
val hsnLike :String = IGNORE,
|
val hsnLike :String = IGNORE,
|
||||||
val uom :UOMFilter = UOMFilter.ALL,
|
val uom :UOM = UOM.ALL,
|
||||||
) : CustomFilters
|
) : CustomFilters
|
||||||
data class DocumentFilters (
|
data class DocumentFilters (
|
||||||
val nameLike :String = IGNORE,
|
val nameLike :String = IGNORE,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user