public ValidationData ValidateCreateDefectType(ClaimsPrincipal principal,
                                                       CreateDefectTypeModel model)
        {
            var validationData = new ValidationData();

            if (string.IsNullOrWhiteSpace(model.Code))
            {
                validationData.Fail("Defect code must not be null", Constants.AppResultCode.FailValidation);
            }
            else if (DefectTypes.Exists(model.Code))
            {
                validationData.Fail("Defect code existed", Constants.AppResultCode.FailValidation);
            }
            if (string.IsNullOrWhiteSpace(model.QCMappingCode))
            {
                validationData.Fail("QC Defect code must not be null", Constants.AppResultCode.FailValidation);
            }
            else if (DefectTypes.ExistsQCMappingCode(model.QCMappingCode))
            {
                validationData.Fail("QC Defect code existed", Constants.AppResultCode.FailValidation);
            }
            if (string.IsNullOrWhiteSpace(model.Name))
            {
                validationData.Fail("Name must not be null", Constants.AppResultCode.FailValidation);
            }
            return(validationData);
        }
        public DefectType CreateDefectType(CreateDefectTypeModel model)
        {
            var entity = model.ToDest();

            PrepareCreate(entity);
            return(context.DefectType.Add(entity).Entity);
        }
        public IActionResult Create(CreateDefectTypeModel model)
        {
            var validationData = _service.ValidateCreateDefectType(User, model);

            if (!validationData.IsValid)
            {
                return(BadRequest(AppResult.FailValidation(data: validationData)));
            }
            var entity = _service.CreateDefectType(model);

            context.SaveChanges();
            // must be in transaction
            var ev = _ev_service.CreateDefectType(entity, User);

            context.SaveChanges();
            return(Created($"/{Business.Constants.ApiEndpoint.RESOURCE_API}?id={entity.Id}",
                           AppResult.Success(entity.Id)));
        }