Compare commits

..

2 Commits

Author SHA1 Message Date
7e8f70a7c2 UI 2024-02-05 09:42:06 +05:30
4688b92314 ExcelToDb complete 2024-01-24 18:33:01 +05:30
5 changed files with 86 additions and 72 deletions

View File

@ -93,46 +93,6 @@ Authorization: {{auth-token}}
DELETE http://localhost:9001/api/vehicle/KA01HD6667
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
POST http://localhost:9001/api/vendor/
Content-Type: application/json
@ -359,3 +319,38 @@ Authorization: {{auth-token}}
"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}}

View File

@ -19,6 +19,7 @@ import io.javalin.Javalin
import io.javalin.apibuilder.ApiBuilder.*
import io.javalin.http.ContentType
import io.javalin.http.Context
import io.javalin.http.HandlerType
import io.javalin.http.UnauthorizedResponse
import io.javalin.http.util.NaiveRateLimit
import io.javalin.http.util.RateLimitUtil
@ -32,7 +33,6 @@ import java.util.*
import java.util.concurrent.TimeUnit
import kotlin.jvm.optionals.getOrDefault
fun main(args: Array<String>) {
val logger = LoggerFactory.getLogger("api")
val adminRole = Role.Standard(Action.ADMIN)
@ -80,6 +80,8 @@ fun main(args: Array<String>) {
TimeUnit.MINUTES
)
if(ctx.method() == HandlerType.OPTIONS) return@before
val authToken = ctx.getAuthHeader() ?: throw UnauthorizedResponse()
@ -142,29 +144,15 @@ fun main(args: Array<String>) {
delete("/{id}", QuotationCtrl::delete, Roles(Role.Explicit(listOf("ROLE_QUOTE_CREATE", "ROLE_ADMIN"))))
}
path("/product") {
post("", ProductCtrl::create, Roles(Role.Explicit(listOf("ROLE_PRODUCT_CREATE", "ROLE_ADMIN"))))
//get("/{hsnCode}", ProductCtrl::get, Roles(Role.Explicit(listOf("ROLE_PRODUCT_VIEW", "ROLE_ADMIN"))))
put(
"/{id}",
ProductCtrl::update,
Roles(Role.Explicit(listOf("ROLE_PRODUCT_UPDATE", "ROLE_ADMIN")))
)
//patch("/{id}", ProductCtrl::patch, Roles(Role.Explicit(listOf("ROLE_PRODUCT_UPDATE", "ROLE_ADMIN"))))
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")
}
}
post("/create", 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("/of/{key}", ProductCtrl::get, Roles(Role.Explicit(listOf("ROLE_PRODUCT_VIEW", "ROLE_ADMIN"))))
put("/{id}", ProductCtrl::update, Roles(Role.Explicit(listOf("ROLE_PRODUCT_UPDATE", "ROLE_ADMIN"))))
patch("/{id}", ProductCtrl::patch, Roles(Role.Explicit(listOf("ROLE_PRODUCT_UPDATE", "ROLE_ADMIN"))))
delete("/{id}", ProductCtrl::delete, Roles(Role.Explicit(listOf("ROLE_PRODUCT_DELETE", "ROLE_ADMIN"))))
get("/to/excel", ProductCtrl::prodExcel)
get("/valid/excel") { ctx -> ctx.json(ExcelRead()) }
post("/excelToDb") {ctx -> ctx.json(excelToDb())}
}
path("/doc"){
post("", Document::create, Roles(Role.Explicit(listOf("ROLE_DOC_CREATE", "ROLE_ADMIN"))))

View File

@ -444,15 +444,15 @@ data class ProductSearch(
object ProductCtrl {
fun get(ctx :Context){
val hsnCode = ctx.pathParam("hsnCode")
val product = database.find(Product::class.java, hsnCode) ?: throw NotFoundResponse("Product not found for $hsnCode")
val key = ctx.pathParam("key")
val product = database.find(Product::class.java, key) ?: throw NotFoundResponse("Product not found for $key")
ctx.json(product)
}
fun getAll(ctx: Context){
val productList = Session.database.find(Product::class.java)
val productList = database.find(Product::class.java)
.findList()
//.sortedBy { it.hsnCode }
//.removeAt(4)
ctx.json(productList)
}
@ -464,7 +464,7 @@ object ProductCtrl {
fun delete(ctx: Context) {
val id = ctx.pathParam("id")
val product = database.delete(Product::class.java, id)
val product = database.deletePermanent(Product::class.java,id)
}
fun patch(ctx: Context) {
@ -472,7 +472,7 @@ object ProductCtrl {
}
fun update(ctx: Context) {
//have to implement
}
fun prodExcel(it: Context) {
val product = database.find(Product::class.java).findList()

View File

@ -387,7 +387,7 @@ fun ImportFromExcel(fileType: FileType, filePath : String) {
"nos" -> UOM.NOS
"ltr" -> UOM.LTR
"mtr" -> UOM.MTR
else -> UOM.ALL
else -> UOM.LTR
}
}
}
@ -551,4 +551,31 @@ fun CreateExcel(productList: List<Product>): InputStream {
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
}

View File

@ -29,10 +29,14 @@ data class POFilters (
val validBefore: LocalDate = maxDate,
val refQuotation :String = IGNORE,
) : CustomFilters
enum class UOMFilter {
ALL //fixme: later
}
data class ProductFilters (
val nameLike :String = IGNORE,
val hsnLike :String = IGNORE,
val uom :UOM = UOM.ALL,
val uom :UOMFilter = UOMFilter.ALL,
) : CustomFilters
data class DocumentFilters (
val nameLike :String = IGNORE,