Esempio n. 1
0
        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)));
 }