public SubjectResponseDTO Update(UpdateSubjectRequestDTO requestDTO) { if (this.FindOneByUUID(requestDTO.uuid) == null) { throw new EntityNotFoundException($"Subject with uuid {requestDTO.uuid} doesn't exist!", GeneralConsts.MICROSERVICE_NAME); } DepartmentDTO department; UserDTO creator; try { department = this._httpClientService.SendRequest <DepartmentDTO>(HttpMethod.Get, "http://localhost:40007/api/departments/" + requestDTO.departmentUUID, new UserPrincipal(_httpContextAccessor.HttpContext).token).Result; } catch { throw new EntityAlreadyExistsException($"Department with uuid {requestDTO.departmentUUID} doesn't exist!", GeneralConsts.MICROSERVICE_NAME); } try { creator = this._httpClientService.SendRequest <UserDTO>(HttpMethod.Get, "http://localhost:40001/api/users/" + requestDTO.creatorUUID, new UserPrincipal(_httpContextAccessor.HttpContext).token).Result; } catch { throw new EntityAlreadyExistsException($"User with uuid {requestDTO.creatorUUID} doesn't exist!", GeneralConsts.MICROSERVICE_NAME); } Subject subject = new Subject() { uuid = requestDTO.uuid, name = requestDTO.name, description = requestDTO.description, creationDate = requestDTO.creationDate, department = new Department() { uuid = requestDTO.departmentUUID }, creator = new User() { uuid = requestDTO.creatorUUID } }; CreateSubjectArchiveRequestDTO archiveDTO = new CreateSubjectArchiveRequestDTO() { subjectUUID = subject.uuid, name = subject.name, description = subject.description, creationDate = subject.creationDate, departmentUUID = subject.department.uuid, creatorUUID = subject.creator.uuid, moderatorUUID = new UserPrincipal(_httpContextAccessor.HttpContext).uuid, changeDate = DateTime.Now }; _ = _subjectArchiveService.Create(archiveDTO); subject = this._queryExecutor.Execute <Subject>(DatabaseConsts.USER_SCHEMA, this._sqlCommands.UPDATE_SUBJECT(subject), this._modelMapper.MapToSubject); SubjectResponseDTO response = this._autoMapper.Map <SubjectResponseDTO>(subject); response.department = department; response.creator = creator; return(response); }
public ActionResult <SubjectResponseDTO> HandleUpdateSubject(UpdateSubjectRequestDTO requestDTO) { return(Ok(this._subjectService.Update(requestDTO))); }