feat: update request for informations, ..items, ..replies

This commit is contained in:
hanif salafi 2024-07-02 09:48:27 +07:00
parent 2d4462df11
commit d689403fd7
11 changed files with 170 additions and 55 deletions

View File

@ -4,6 +4,7 @@ import "time"
type RequestForInformationItems struct { type RequestForInformationItems struct {
ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"` ID uint `json:"id" gorm:"primaryKey;type:int4;autoIncrement"`
RequestForInformationId int `json:"request_for_information_id" gorm:"type:int4"`
RequestedInfo string `json:"requested_info" gorm:"type:varchar"` RequestedInfo string `json:"requested_info" gorm:"type:varchar"`
Reason string `json:"reason" gorm:"type:varchar"` Reason string `json:"reason" gorm:"type:varchar"`
StatusId int `json:"status_id" gorm:"type:int4"` StatusId int `json:"status_id" gorm:"type:int4"`

View File

@ -50,6 +50,7 @@ func (_i *requestForInformationItemsController) All(c *fiber.Ctx) error {
} }
reqContext := request.RequestForInformationItemsQueryRequestContext{ reqContext := request.RequestForInformationItemsQueryRequestContext{
RequestForInformationId: c.Query("request_for_information_id"),
RequestedInfo: c.Query("requested_info"), RequestedInfo: c.Query("requested_info"),
Reason: c.Query("reason"), Reason: c.Query("reason"),
StatusId: c.Query("status_id"), StatusId: c.Query("status_id"),

View File

@ -9,6 +9,7 @@ func RequestForInformationItemsResponseMapper(requestForInformationItemsReq *ent
if requestForInformationItemsReq != nil { if requestForInformationItemsReq != nil {
requestForInformationItemsRes = &res.RequestForInformationItemsResponse{ requestForInformationItemsRes = &res.RequestForInformationItemsResponse{
ID: requestForInformationItemsReq.ID, ID: requestForInformationItemsReq.ID,
RequestForInformationId: requestForInformationItemsReq.RequestForInformationId,
RequestedInfo: requestForInformationItemsReq.RequestedInfo, RequestedInfo: requestForInformationItemsReq.RequestedInfo,
Reason: requestForInformationItemsReq.Reason, Reason: requestForInformationItemsReq.Reason,
StatusId: requestForInformationItemsReq.StatusId, StatusId: requestForInformationItemsReq.StatusId,

View File

@ -38,6 +38,9 @@ func (_i *requestForInformationItemsRepository) GetAll(req request.RequestForInf
query := _i.DB.DB.Model(&entity.RequestForInformationItems{}) query := _i.DB.DB.Model(&entity.RequestForInformationItems{})
query = query.Where("is_active = ?", true) query = query.Where("is_active = ?", true)
if req.RequestForInformationId != nil {
query = query.Where("request_for_information_id = ?", req.RequestForInformationId)
}
if req.RequestedInfo != nil && *req.RequestedInfo != "" { if req.RequestedInfo != nil && *req.RequestedInfo != "" {
requestedInfo := strings.ToLower(*req.RequestedInfo) requestedInfo := strings.ToLower(*req.RequestedInfo)
query = query.Where("LOWER(requested_info) LIKE ?", "%"+strings.ToLower(requestedInfo)+"%") query = query.Where("LOWER(requested_info) LIKE ?", "%"+strings.ToLower(requestedInfo)+"%")

View File

@ -12,6 +12,7 @@ type RequestForInformationItemsGeneric interface {
} }
type RequestForInformationItemsQueryRequest struct { type RequestForInformationItemsQueryRequest struct {
RequestForInformationId *int `json:"request_for_information_id"`
RequestedInfo *string `json:"requested_info"` RequestedInfo *string `json:"requested_info"`
Reason *string `json:"reason"` Reason *string `json:"reason"`
StatusId *int `json:"status_id"` StatusId *int `json:"status_id"`
@ -19,6 +20,7 @@ type RequestForInformationItemsQueryRequest struct {
} }
type RequestForInformationItemsCreateRequest struct { type RequestForInformationItemsCreateRequest struct {
RequestForInformationId int `json:"request_for_information_id" validate:"required"`
RequestedInfo string `json:"requested_info" validate:"required"` RequestedInfo string `json:"requested_info" validate:"required"`
Reason string `json:"reason" validate:"required"` Reason string `json:"reason" validate:"required"`
StatusId int `json:"status_id" validate:"required"` StatusId int `json:"status_id" validate:"required"`
@ -26,31 +28,35 @@ type RequestForInformationItemsCreateRequest struct {
func (req RequestForInformationItemsCreateRequest) ToEntity() *entity.RequestForInformationItems { func (req RequestForInformationItemsCreateRequest) ToEntity() *entity.RequestForInformationItems {
return &entity.RequestForInformationItems{ return &entity.RequestForInformationItems{
RequestForInformationId: req.RequestForInformationId,
RequestedInfo: req.RequestedInfo, RequestedInfo: req.RequestedInfo,
Reason: req.Reason, Reason: req.Reason,
StatusId: req.StatusId, StatusId: req.StatusId,
IsActive: func() *bool { b := true; return &b }(),
} }
} }
type RequestForInformationItemsUpdateRequest struct { type RequestForInformationItemsUpdateRequest struct {
ID uint `json:"id" validate:"required"` ID uint `json:"id" validate:"required"`
RequestForInformationId int `json:"request_for_information_id" validate:"required"`
RequestedInfo string `json:"requested_info" validate:"required"` RequestedInfo string `json:"requested_info" validate:"required"`
Reason string `json:"reason" validate:"required"` Reason string `json:"reason" validate:"required"`
StatusId int `json:"status_id" validate:"required"` StatusId int `json:"status_id" validate:"required"`
UpdatedAt time.Time `json:"updated_at"`
} }
func (req RequestForInformationItemsUpdateRequest) ToEntity() *entity.RequestForInformationItems { func (req RequestForInformationItemsUpdateRequest) ToEntity() *entity.RequestForInformationItems {
return &entity.RequestForInformationItems{ return &entity.RequestForInformationItems{
ID: req.ID, ID: req.ID,
RequestForInformationId: req.RequestForInformationId,
RequestedInfo: req.RequestedInfo, RequestedInfo: req.RequestedInfo,
Reason: req.Reason, Reason: req.Reason,
StatusId: req.StatusId, StatusId: req.StatusId,
UpdatedAt: req.UpdatedAt, UpdatedAt: time.Now(),
} }
} }
type RequestForInformationItemsQueryRequestContext struct { type RequestForInformationItemsQueryRequestContext struct {
RequestForInformationId string `json:"request_for_information_id"`
RequestedInfo string `json:"requested_info"` RequestedInfo string `json:"requested_info"`
Reason string `json:"reason"` Reason string `json:"reason"`
StatusId string `json:"status_id"` StatusId string `json:"status_id"`
@ -59,6 +65,12 @@ type RequestForInformationItemsQueryRequestContext struct {
func (req RequestForInformationItemsQueryRequestContext) ToParamRequest() RequestForInformationItemsQueryRequest { func (req RequestForInformationItemsQueryRequestContext) ToParamRequest() RequestForInformationItemsQueryRequest {
var request RequestForInformationItemsQueryRequest var request RequestForInformationItemsQueryRequest
if requestForInformationIdStr := req.RequestForInformationId; requestForInformationIdStr != "" {
requestForInformationId, err := strconv.Atoi(requestForInformationIdStr)
if err == nil {
request.RequestForInformationId = &requestForInformationId
}
}
if requestedInfo := req.RequestedInfo; requestedInfo != "" { if requestedInfo := req.RequestedInfo; requestedInfo != "" {
request.RequestedInfo = &requestedInfo request.RequestedInfo = &requestedInfo
} }

View File

@ -4,6 +4,7 @@ import "time"
type RequestForInformationItemsResponse struct { type RequestForInformationItemsResponse struct {
ID uint `json:"id"` ID uint `json:"id"`
RequestForInformationId int `json:"request_for_information_id"`
RequestedInfo string `json:"requested_info"` RequestedInfo string `json:"requested_info"`
Reason string `json:"reason"` Reason string `json:"reason"`
StatusId int `json:"status_id"` StatusId int `json:"status_id"`

View File

@ -105,6 +105,7 @@ func (_i *requestForInformationRepliesController) Show(c *fiber.Ctx) error {
// @Description API for create RequestForInformationReplies // @Description API for create RequestForInformationReplies
// @Tags RequestForInformationReplies // @Tags RequestForInformationReplies
// @Security Bearer // @Security Bearer
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>)
// @Param payload body request.RequestForInformationRepliesCreateRequest true "Required payload" // @Param payload body request.RequestForInformationRepliesCreateRequest true "Required payload"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 400 {object} response.BadRequestError // @Failure 400 {object} response.BadRequestError
@ -135,6 +136,7 @@ func (_i *requestForInformationRepliesController) Save(c *fiber.Ctx) error {
// @Description API for update RequestForInformationReplies // @Description API for update RequestForInformationReplies
// @Tags RequestForInformationReplies // @Tags RequestForInformationReplies
// @Security Bearer // @Security Bearer
// @Param Authorization header string true "Insert your access token" default(Bearer <Add access token here>)
// @Param payload body request.RequestForInformationRepliesUpdateRequest true "Required payload" // @Param payload body request.RequestForInformationRepliesUpdateRequest true "Required payload"
// @Param id path int true "RequestForInformationReplies ID" // @Param id path int true "RequestForInformationReplies ID"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response

View File

@ -32,6 +32,7 @@ func (req RequestForInformationRepliesCreateRequest) ToEntity() *entity.RequestF
FileUrl: req.FileUrl, FileUrl: req.FileUrl,
Response: req.Response, Response: req.Response,
StatusId: req.StatusId, StatusId: req.StatusId,
IsActive: func() *bool { b := true; return &b }(),
} }
} }

View File

@ -5308,6 +5308,11 @@ const docTemplate = `{
"name": "reason", "name": "reason",
"in": "query" "in": "query"
}, },
{
"type": "integer",
"name": "request_for_information_id",
"in": "query"
},
{ {
"type": "string", "type": "string",
"name": "requested_info", "name": "requested_info",
@ -5701,6 +5706,14 @@ const docTemplate = `{
], ],
"summary": "Create RequestForInformationReplies", "summary": "Create RequestForInformationReplies",
"parameters": [ "parameters": [
{
"type": "string",
"default": "Bearer \u003cAdd access token here\u003e",
"description": "Insert your access token",
"name": "Authorization",
"in": "header",
"required": true
},
{ {
"description": "Required payload", "description": "Required payload",
"name": "payload", "name": "payload",
@ -5799,6 +5812,14 @@ const docTemplate = `{
], ],
"summary": "update RequestForInformationReplies", "summary": "update RequestForInformationReplies",
"parameters": [ "parameters": [
{
"type": "string",
"default": "Bearer \u003cAdd access token here\u003e",
"description": "Insert your access token",
"name": "Authorization",
"in": "header",
"required": true
},
{ {
"description": "Required payload", "description": "Required payload",
"name": "payload", "name": "payload",
@ -6120,6 +6141,14 @@ const docTemplate = `{
], ],
"summary": "update RequestForInformations", "summary": "update RequestForInformations",
"parameters": [ "parameters": [
{
"type": "string",
"default": "Bearer \u003cAdd access token here\u003e",
"description": "Insert your access token",
"name": "Authorization",
"in": "header",
"required": true
},
{ {
"description": "Required payload", "description": "Required payload",
"name": "payload", "name": "payload",
@ -8273,6 +8302,7 @@ const docTemplate = `{
"type": "object", "type": "object",
"required": [ "required": [
"reason", "reason",
"request_for_information_id",
"requested_info", "requested_info",
"status_id" "status_id"
], ],
@ -8280,6 +8310,9 @@ const docTemplate = `{
"reason": { "reason": {
"type": "string" "type": "string"
}, },
"request_for_information_id": {
"type": "integer"
},
"requested_info": { "requested_info": {
"type": "string" "type": "string"
}, },
@ -8293,6 +8326,7 @@ const docTemplate = `{
"required": [ "required": [
"id", "id",
"reason", "reason",
"request_for_information_id",
"requested_info", "requested_info",
"status_id" "status_id"
], ],
@ -8303,14 +8337,14 @@ const docTemplate = `{
"reason": { "reason": {
"type": "string" "type": "string"
}, },
"request_for_information_id": {
"type": "integer"
},
"requested_info": { "requested_info": {
"type": "string" "type": "string"
}, },
"status_id": { "status_id": {
"type": "integer" "type": "integer"
},
"updated_at": {
"type": "string"
} }
} }
}, },

View File

@ -5297,6 +5297,11 @@
"name": "reason", "name": "reason",
"in": "query" "in": "query"
}, },
{
"type": "integer",
"name": "request_for_information_id",
"in": "query"
},
{ {
"type": "string", "type": "string",
"name": "requested_info", "name": "requested_info",
@ -5690,6 +5695,14 @@
], ],
"summary": "Create RequestForInformationReplies", "summary": "Create RequestForInformationReplies",
"parameters": [ "parameters": [
{
"type": "string",
"default": "Bearer \u003cAdd access token here\u003e",
"description": "Insert your access token",
"name": "Authorization",
"in": "header",
"required": true
},
{ {
"description": "Required payload", "description": "Required payload",
"name": "payload", "name": "payload",
@ -5788,6 +5801,14 @@
], ],
"summary": "update RequestForInformationReplies", "summary": "update RequestForInformationReplies",
"parameters": [ "parameters": [
{
"type": "string",
"default": "Bearer \u003cAdd access token here\u003e",
"description": "Insert your access token",
"name": "Authorization",
"in": "header",
"required": true
},
{ {
"description": "Required payload", "description": "Required payload",
"name": "payload", "name": "payload",
@ -6109,6 +6130,14 @@
], ],
"summary": "update RequestForInformations", "summary": "update RequestForInformations",
"parameters": [ "parameters": [
{
"type": "string",
"default": "Bearer \u003cAdd access token here\u003e",
"description": "Insert your access token",
"name": "Authorization",
"in": "header",
"required": true
},
{ {
"description": "Required payload", "description": "Required payload",
"name": "payload", "name": "payload",
@ -8262,6 +8291,7 @@
"type": "object", "type": "object",
"required": [ "required": [
"reason", "reason",
"request_for_information_id",
"requested_info", "requested_info",
"status_id" "status_id"
], ],
@ -8269,6 +8299,9 @@
"reason": { "reason": {
"type": "string" "type": "string"
}, },
"request_for_information_id": {
"type": "integer"
},
"requested_info": { "requested_info": {
"type": "string" "type": "string"
}, },
@ -8282,6 +8315,7 @@
"required": [ "required": [
"id", "id",
"reason", "reason",
"request_for_information_id",
"requested_info", "requested_info",
"status_id" "status_id"
], ],
@ -8292,14 +8326,14 @@
"reason": { "reason": {
"type": "string" "type": "string"
}, },
"request_for_information_id": {
"type": "integer"
},
"requested_info": { "requested_info": {
"type": "string" "type": "string"
}, },
"status_id": { "status_id": {
"type": "integer" "type": "integer"
},
"updated_at": {
"type": "string"
} }
} }
}, },

View File

@ -373,12 +373,15 @@ definitions:
properties: properties:
reason: reason:
type: string type: string
request_for_information_id:
type: integer
requested_info: requested_info:
type: string type: string
status_id: status_id:
type: integer type: integer
required: required:
- reason - reason
- request_for_information_id
- requested_info - requested_info
- status_id - status_id
type: object type: object
@ -388,15 +391,16 @@ definitions:
type: integer type: integer
reason: reason:
type: string type: string
request_for_information_id:
type: integer
requested_info: requested_info:
type: string type: string
status_id: status_id:
type: integer type: integer
updated_at:
type: string
required: required:
- id - id
- reason - reason
- request_for_information_id
- requested_info - requested_info
- status_id - status_id
type: object type: object
@ -4118,6 +4122,9 @@ paths:
- in: query - in: query
name: reason name: reason
type: string type: string
- in: query
name: request_for_information_id
type: integer
- in: query - in: query
name: requested_info name: requested_info
type: string type: string
@ -4363,6 +4370,12 @@ paths:
post: post:
description: API for create RequestForInformationReplies description: API for create RequestForInformationReplies
parameters: parameters:
- default: Bearer <Add access token here>
description: Insert your access token
in: header
name: Authorization
required: true
type: string
- description: Required payload - description: Required payload
in: body in: body
name: payload name: payload
@ -4455,6 +4468,12 @@ paths:
put: put:
description: API for update RequestForInformationReplies description: API for update RequestForInformationReplies
parameters: parameters:
- default: Bearer <Add access token here>
description: Insert your access token
in: header
name: Authorization
required: true
type: string
- description: Required payload - description: Required payload
in: body in: body
name: payload name: payload
@ -4657,6 +4676,12 @@ paths:
put: put:
description: API for update RequestForInformations description: API for update RequestForInformations
parameters: parameters:
- default: Bearer <Add access token here>
description: Insert your access token
in: header
name: Authorization
required: true
type: string
- description: Required payload - description: Required payload
in: body in: body
name: payload name: payload