Files
bordro-esleme/svc/api/acompany.go
2024-04-16 22:01:23 +03:00

163 lines
3.4 KiB
Go

package api
import (
"bordro-esleme/model/company"
"git.makki.io/makki/libgo/cmn"
"git.makki.io/makki/libgo/dbu"
"git.makki.io/makki/libgo/mhttp"
"git.makki.io/makki/libgo/nauth"
"github.com/go-chi/chi/v5"
"net/http"
)
func companyGet(w http.ResponseWriter, r *http.Request) {
/*
tc := auth.TokenDataFromRequest(r)
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpRead) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
id := cmn.StrToInt64(chi.URLParam(r, "id"))
data, err := company.DbRead(r.Context(), id)
if err != nil {
if dbu.IsNoRowsErr(err) {
mhttp.NotFound(w)
return
} else {
mhttp.InternalServerError(w, err)
return
}
}
mhttp.ResponseSuccess(w, data)
}
func companyCreate(w http.ResponseWriter, r *http.Request) {
tc := nauth.TokenPayloadFromRequest(r)
/*
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpCreate) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
data := company.New()
err := cmn.BodyToJsonReq(r, &data)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
err = data.DbCreate(r.Context(), tc.ClientID(), true, tc.UsrID())
if err != nil {
mhttp.InternalServerError(w, err)
return
}
mhttp.ResponseSuccess(w, data.ID)
}
func companyUpdate(w http.ResponseWriter, r *http.Request) {
tc := nauth.TokenPayloadFromRequest(r)
/*
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpUpdate) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
data := company.New()
err := cmn.BodyToJsonReq(r, &data)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
err = data.DbUpdate(r.Context(), true, tc.UsrID())
if err != nil {
mhttp.InternalServerError(w, err)
return
}
mhttp.ResponseSuccess(w, true)
}
func companyDelete(w http.ResponseWriter, r *http.Request) {
tc := nauth.TokenPayloadFromRequest(r)
/*
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpDelete) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
id := cmn.StrToInt64(chi.URLParam(r, "id"))
err := company.DbDelete(r.Context(), id, true, tc.UsrID())
if err != nil {
mhttp.InternalServerError(w, err)
return
}
mhttp.ResponseSuccess(w, true)
}
func companyList(w http.ResponseWriter, r *http.Request) {
/*
tc := auth.TokenDataFromRequest(r)
rbac, err := tc.RBAC(r.Context(), auth.MdCompany)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
if !rbac.IsGrantedOp(auth.OpRead) && !tc.IsAdmin() {
mhttp.Forbidden(w)
return
}
*/
var data []company.Company
tr, err := dbu.NewTableRequestFromRequest(r)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
rp, err := dbu.NewRepoWithFile(r.Context(), "company", nil)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
respData, err := rp.MList(tr, &data)
if err != nil {
mhttp.InternalServerError(w, err)
return
}
mhttp.ResponseSuccess(w, respData)
}