forked from ebhomengo/niki
				
			fix(validation): Add validation for KindBox status in enumeration by admin
This commit is contained in:
		
							parent
							
								
									013fd8cf5c
								
							
						
					
					
						commit
						d1ebfbb525
					
				| 
						 | 
					@ -35,5 +35,6 @@ const (
 | 
				
			||||||
	ErrorMsgSortDirectionShouldBeAscOrDesc     = "sort direction should be asc or desc"
 | 
						ErrorMsgSortDirectionShouldBeAscOrDesc     = "sort direction should be asc or desc"
 | 
				
			||||||
	ErrorMsgSortFieldIsNotValid                = "sort field is not valid"
 | 
						ErrorMsgSortFieldIsNotValid                = "sort field is not valid"
 | 
				
			||||||
	ErrorMsgAssignReceiverAgentKindBoxStatus   = "only ready to return kindboxes can be assigned to a receiver agent"
 | 
						ErrorMsgAssignReceiverAgentKindBoxStatus   = "only ready to return kindboxes can be assigned to a receiver agent"
 | 
				
			||||||
 | 
						ErrorMsgReturnKindBoxStatus				   = "only returned kindboxes can be enumerated"
 | 
				
			||||||
	ErrorMsgInvalidSerialNumberRange           = "invalid serial number range"
 | 
						ErrorMsgInvalidSerialNumberRange           = "invalid serial number range"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,11 +14,12 @@ func (v Validator) ValidateEnumerate(ctx context.Context, req param.EnumerateKin
 | 
				
			||||||
	const op = "adminkindboxvalidator.ValidateEnumerate"
 | 
						const op = "adminkindboxvalidator.ValidateEnumerate"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := validation.ValidateStruct(&req,
 | 
						if err := validation.ValidateStruct(&req,
 | 
				
			||||||
 | 
					 | 
				
			||||||
		validation.Field(&req.KindBoxID, validation.Required,
 | 
							validation.Field(&req.KindBoxID, validation.Required,
 | 
				
			||||||
			validation.By(v.doesKindBoxExist(ctx))),
 | 
								validation.By(v.doesKindBoxExist(ctx)),
 | 
				
			||||||
 | 
								validation.By(v.CheckKindBoxStatusForEnumeration(ctx))),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		validation.Field(&req.Amount, validation.Required),
 | 
							validation.Field(&req.Amount, validation.Required),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	); err != nil {
 | 
						); err != nil {
 | 
				
			||||||
		fieldErrors := make(map[string]string)
 | 
							fieldErrors := make(map[string]string)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,3 +81,21 @@ func (v Validator) doesAgentExist(ctx context.Context) validation.RuleFunc {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (v Validator) CheckKindBoxStatusForEnumeration(ctx context.Context) validation.RuleFunc {
 | 
				
			||||||
 | 
						return func(value interface{}) error {
 | 
				
			||||||
 | 
							kindBoxID, ok := value.(uint)
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							kindBox, err := v.repo.GetKindBox(ctx, kindBoxID)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if kindBox.Status != entity.KindBoxReturnedStatus {
 | 
				
			||||||
 | 
								return fmt.Errorf(errmsg.ErrorMsgReturnKindBoxStatus)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue