package file_attachment import ( "net/http" eru "simrs-vx/internal/domain/references/upload" "strconv" "strings" d "github.com/karincake/dodol" rw "github.com/karincake/risoles" sf "github.com/karincake/semprit" // ua "github.com/karincake/tumpeng/auth/svc" e "simrs-vx/internal/domain/main-entities/file-attachment" u "simrs-vx/internal/use-case/main-use-case/file-attachement" ) type myBase struct{} var O myBase func (obj myBase) Create(w http.ResponseWriter, r *http.Request) { err := r.ParseMultipartForm(10 << 20) // 10 MB if err != nil { rw.DataResponse(w, nil, err) return } file, header, err := r.FormFile("content") if err != nil { rw.DataResponse(w, nil, err) return } defer file.Close() refIDStr := r.FormValue("ref_id") var refID *uint if refIDStr != "" { if id64, err := strconv.ParseUint(refIDStr, 10, 32); err == nil { id := uint(id64) refID = &id } } employeeIdStr := r.FormValue("employee_id") dto := e.CreateDto{ EntityType_Code: eru.EntityTypeCode(r.FormValue("entityType_code")), Ref_Id: refID, Type_Code: eru.UploadCode(r.FormValue("type_code")), Name: r.FormValue("name"), Upload_Employee_Id: &employeeIdStr, File: file, FileHeader: header, Filename: header.Filename, Size: header.Size, MimeType: header.Header.Get("Content-Type"), } errs := validateCreate(dto) if len(errs) > 0 { rw.DataResponse(w, nil, d.FieldError{ Code: "data-validation-fail", Message: strings.Join(errs, "\n"), }) } res, err := u.Create(dto) rw.DataResponse(w, res, err) } func (obj myBase) GetList(w http.ResponseWriter, r *http.Request) { dto := e.ReadListDto{} sf.UrlQueryParam(&dto, *r.URL) res, err := u.ReadList(dto) rw.DataResponse(w, res, err) } func (obj myBase) GetDetail(w http.ResponseWriter, r *http.Request) { id := rw.ValidateInt(w, "id", r.PathValue("id")) if id <= 0 { return } dto := e.ReadDetailDto{} dto.Id = uint16(id) res, err := u.ReadDetail(dto) rw.DataResponse(w, res, err) } func (obj myBase) Update(w http.ResponseWriter, r *http.Request) { id := rw.ValidateInt(w, "id", r.PathValue("id")) if id <= 0 { return } err := r.ParseMultipartForm(10 << 20) // 10 MB if err != nil { rw.DataResponse(w, nil, err) return } file, header, err := r.FormFile("content") if err != nil { rw.DataResponse(w, nil, err) return } defer file.Close() refIDStr := r.FormValue("ref_id") var refID *uint if refIDStr != "" { if id64, err := strconv.ParseUint(refIDStr, 10, 32); err == nil { id := uint(id64) refID = &id } } employeeIdStr := r.FormValue("employee_id") dto := e.CreateDto{ EntityType_Code: eru.EntityTypeCode(r.FormValue("entityType_code")), Ref_Id: refID, Type_Code: eru.UploadCode(r.FormValue("type_code")), Name: r.FormValue("name"), Upload_Employee_Id: &employeeIdStr, File: file, FileHeader: header, Filename: header.Filename, Size: header.Size, MimeType: header.Header.Get("Content-Type"), } res, err := u.Update(e.UpdateDto{Id: uint16(id), CreateDto: dto}) rw.DataResponse(w, res, err) } func (obj myBase) Delete(w http.ResponseWriter, r *http.Request) { id := rw.ValidateInt(w, "id", r.PathValue("id")) if id <= 0 { return } dto := e.DeleteDto{} dto.Id = uint16(id) res, err := u.Delete(dto) rw.DataResponse(w, res, err) }