public async Task <IActionResult> AddConcept([FromBody] AddConceptRequest concept) { var loggedUser = User.GetUserIdFromToken(); var result = await _conceptService.AddConceptAsync(loggedUser, concept); var mapped = _mapper.Map <ConceptResponse>(result); return(Created("", new ApiOkResponse(mapped))); }
public async Task <Concept> AddConceptAsync(int loggedUser, AddConceptRequest concept) { // 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); } // validate concept title var existConceptName = await _uow.ConceptRepository.FindByAsync(p => p.Title.ToLower() == concept.Title.ToLower()); if (existConceptName.Count > 0) { throw new InvalidDataException(ExceptionConstants.INVALID_DATA, "Concept name"); } var conceptDb = new Concept(); conceptDb.Title = concept.Title; conceptDb.Description = concept.Description; conceptDb.CreatedAt = DateTime.UtcNow; conceptDb.ModifiedAt = DateTime.UtcNow; if (concept.Image != null) { string guid = Guid.NewGuid().ToString(); await _fileService.UploadFileAsync(concept.Image, guid); conceptDb.Image = guid; } await _uow.ConceptRepository.AddAsync(conceptDb); await _uow.CommitAsync(); return(conceptDb); }