public async Task <IActionResult> Create()
        {
            var id = User.Claims.Where(c => c.Type == "Id").Select(c => c.Value).SingleOrDefault();

            if (String.IsNullOrEmpty(id))
            {
                return(Unauthorized());
            }
            Guid createdById = new(id);

            using (var reader = new StreamReader(Request.Body))
            {
                var body = await reader.ReadToEndAsync();

                try
                {
                    ProjectForCreateDto projectForCreate = JsonSerializer.Deserialize <ProjectForCreateDto>(body);

                    await _projectsService.Create(projectForCreate, createdById);

                    return(Ok());
                }
                catch (Exception e)
                {
                    return(BadRequest(e.Message));
                }
            }
        }
        public async Task <IActionResult> AddProject(ProjectForCreateDto projectForCreateDto)
        {
            projectForCreateDto.ProjectName = projectForCreateDto.ProjectName.ToLower();
            if (await _repo.ProjectExists(projectForCreateDto.ProjectName))
            {
                return(BadRequest("Ce project exist déjà"));
            }

            var ProjectToReturn = _mapper.Map <Project>(projectForCreateDto);
            var projectToCreate = await _repo.AddProject(ProjectToReturn);

            return(CreatedAtRoute("GetProject", new{ id = projectToCreate.Id }, projectToCreate));
        }
        public async System.Threading.Tasks.Task Create(ProjectForCreateDto projectForCreate, Guid actorId)
        {
            projectForCreate.Project.CreatedById = actorId;
            projectForCreate.Project.CreatedAt   = DateTime.UtcNow;

            await _projectsRepository.Create(projectForCreate.Project);

            await _statusesRepository.Create(new Status()
            {
                ProjectId = projectForCreate.Project.Id, Name = "ToDo", Index = 0
            });

            await _statusesRepository.Create(new Status()
            {
                ProjectId = projectForCreate.Project.Id, Name = "InProgress", Index = 1
            });

            await _statusesRepository.Create(new Status()
            {
                ProjectId = projectForCreate.Project.Id, Name = "Done", Index = 2
            });

            await _projectParticipationRepository.Create(new ProjectParticipation()
            {
                ProjectId         = projectForCreate.Project.Id,
                UserId            = actorId,
                TeamId            = null,
                ParticipationType = ParticipationType.Creator
            });

            if (projectForCreate.Members != null)
            {
                foreach (var memberId in projectForCreate.Members)
                {
                    await _projectParticipationRepository.Create(new ProjectParticipation()
                    {
                        ProjectId         = projectForCreate.Project.Id,
                        UserId            = memberId,
                        TeamId            = null,
                        ParticipationType = ParticipationType.Executor
                    });
                }
            }
        }
示例#4
0
        public async Task <IActionResult> CreateAsync([FromBody] ProjectForCreateDto projectForCreateDto)
        {
            var subject = await _subjectService.GetSubjectByIdAsync(projectForCreateDto.SubjectId);

            if (subject == null)
            {
                return(BadRequest($@"No Subject with {projectForCreateDto.SubjectId} has been found"));
            }

            var project =
                _mapper.Map <Project>(projectForCreateDto);

            var isSuccess = await _projectService.CreateAsync(project);

            if (!isSuccess)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError,
                                  "Something went wrong while saving the project in the database"));
            }

            var projectForReturnDto = _mapper.Map <ProjectForReturnDto>(project);

            return(CreatedAtRoute("GetProject", new { id = projectForReturnDto.Id }, projectForReturnDto));
        }