public async Task <IActionResult> EditConcept([FromRoute] int id, UpdateConceptRequest concept) { var loggedUser = User.GetUserIdFromToken(); var result = await _conceptService.EditConceptAsync(loggedUser, concept, id); var mapped = _mapper.Map <ConceptAdminResponse>(result); return(Created("", new ApiOkResponse(mapped))); }
public async Task <Concept> EditConceptAsync(int loggedUser, UpdateConceptRequest concept, int id) { // validate admin user var user = await _uow.UserRepository.FindByAsync(u => u.Id == loggedUser && u.Role == RoleEnum.ADMIN); if (user.Count == 0) { throw new NotAllowedException(ExceptionConstants.NOT_ALLOWED); } var conceptDb = await _uow.ConceptRepository.GetAsync(id); if (conceptDb == null) { throw new NotFoundException(ExceptionConstants.NOT_FOUND, "Concept"); } // validate concept name var existConceptName = await _uow.ConceptRepository.FindByAsync(p => p.Title.ToLower() == concept.Title.ToLower() && p.Id != id); if (existConceptName.Count > 0) { throw new InvalidDataException(ExceptionConstants.INVALID_DATA, "Concept name"); } conceptDb.Title = concept.Title; conceptDb.Description = string.IsNullOrWhiteSpace(concept.Description) || concept.Description == "null" ? "" : concept.Description; conceptDb.ModifiedAt = DateTime.UtcNow; if (!string.IsNullOrWhiteSpace(concept.RemovedImage) && concept.RemovedImage != "null") { await _fileService.DeleteFileAsync(conceptDb.Image); conceptDb.Image = ""; } if (concept.Image != null) { string guid = Guid.NewGuid().ToString(); await _fileService.UploadFileAsync(concept.Image, guid); conceptDb.Image = guid; } await _uow.ConceptRepository.UpdateAsync(conceptDb, id); await _uow.CommitAsync(); return(conceptDb); }