Exemple #1
0
        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)));
        }
Exemple #2
0
        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);
        }