public async Task <IActionResult> UpdateImage(int id,
                                                      [FromForm] UpdateDefectTypeImageModel model)
        {
            var entity = _service.DefectTypes.Id(id).FirstOrDefault();

            if (entity == null)
            {
                return(NotFound(AppResult.NotFound()));
            }
            var validationData = _service.ValidateUpdateDefectTypeImage(User, entity, model);

            if (!validationData.IsValid)
            {
                return(BadRequest(AppResult.FailValidation(data: validationData)));
            }
            var(relPath, fullPath) = _service.GetDefectTypeImagePath(entity,
                                                                     Settings.Instance.UploadFolderPath, Settings.Instance.WebRootPath);
            var oldRelPath = entity.SampleImage;

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

            context.SaveChanges();
            await _service.SaveReplaceDefectTypeImage(model, fullPath, Settings.Instance.WebRootPath, oldRelPath);

            return(Created($"/{relPath}",
                           AppResult.Success(relPath)));
        }
        public async Task SaveReplaceDefectTypeImage(UpdateDefectTypeImageModel model,
                                                     string fullPath, string rootPath, string oldRelPath)
        {
            var fileService = provider.GetRequiredService <IFileService>();

            if (oldRelPath != null)
            {
                fileService.DeleteFile(oldRelPath, rootPath);
            }
            await fileService.SaveFile(model.image, fullPath);
        }
 public ValidationData ValidateUpdateDefectTypeImage(ClaimsPrincipal principal,
                                                     DefectType entity, UpdateDefectTypeImageModel model)
 {
     return(new ValidationData());
 }