public SubjectResponseDTO Create(CreateSubjectRequestDTO requestDTO) { if (this.FindOneByNameAndDepartment(requestDTO.name, requestDTO.departmentUUID) != null) { throw new EntityAlreadyExistsException($"Subject with name {requestDTO.name} already exists on Department {requestDTO.departmentUUID}!", 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() { 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 }; subject = this._queryExecutor.Execute <Subject>(DatabaseConsts.USER_SCHEMA, this._sqlCommands.CREATE_SUBJECT(subject), this._modelMapper.MapToSubject); SubjectResponseDTO response = this._autoMapper.Map <SubjectResponseDTO>(subject); response.department = department; response.creator = creator; _ = _subjectArchiveService.Create(archiveDTO); return(response); }
public ActionResult <SubjectResponseDTO> HandleCreateSubject(CreateSubjectRequestDTO requestDTO) { return(Ok(this._subjectService.Create(requestDTO))); }