コード例 #1
0
        public async Task <ActionResult <string> > CreateInvitation(CreateInvitationDto dto, CancellationToken cancellationToken)
        {
            string result = await _projectService.CreateInvitation(dto, cancellationToken);

            if (result != "success")
            {
                return(BadRequest(result));
            }

            return(Ok());
        }
        public async Task <IActionResult> Post([FromBody] CreateInvitationDto invitationDto)
        {
            try
            {
                if (invitationDto.FromId == null || invitationDto.ToId == null)
                {
                    return(BadRequest());
                }

                var invitation = _mapper.Map <Invitation>(invitationDto);

                _context.Invitations.Add(invitation);
                await _context.SaveChangesAsync();

                return(Ok(invitation.Id));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
コード例 #3
0
        public async Task <string> CreateInvitation(CreateInvitationDto request, CancellationToken cancellationToken)
        {
            Project selectedProject = await _projectRepository.Get(request.ProjectId, cancellationToken);

            if (selectedProject == null)
            {
                return(ErrorMessages.InvalidProjectId);
            }

            CreateInvitationDtoValidator dtoValidator = new CreateInvitationDtoValidator(_projectRepository);
            var validationResult = await dtoValidator.ValidateAsync(request, cancellationToken);

            if (validationResult.IsValid == false)
            {
                return(validationResult.ToString());
            }

            Invitation newInvitation = Invitation.CreateInvitation(request.ProjectId, selectedProject, request.CollaboratorId, request.OwnerId, request.InvitationType);
            await _projectRepository.AddInvitation(newInvitation, cancellationToken);

            return("success");
        }
コード例 #4
0
        public ActionResult <ParticipationDto> CreateInvitation(Guid personId, Guid projectId, [FromBody] CreateInvitationDto dto)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }
                if (!_db.Person.BelongsToUser(personId, HttpContext))
                {
                    return(Forbid());
                }
                if (_db.Participation.GetRole(personId, projectId)?.ParticipantsWrite != true)
                {
                    return(Forbid());
                }

                var person = _db.Person.FindByCondition(x => x.Id == dto.PersonId).SingleOrDefault();
                if (person == null)
                {
                    return(BadRequest(nameof(PersonNotFoundException)));
                }

                var role = _db.Role.FindByCondition(x => x.Id == dto.RoleId && x.ProjectId == projectId).SingleOrDefault();
                if (role == null)
                {
                    return(BadRequest());
                }

                var participation = _mapper.Map <Participation>(dto);
                participation.ProjectId = projectId;
                participation.Status    = ParticipationStatus.Invited.ToString();

                _db.Participation.Create(participation);
                _db.Save();

                var insertedParticipation = _db.Participation
                                            .FindByCondition(x => x.Id == participation.Id)
                                            .Include(x => x.Person)
                                            .Include(x => x.Role)
                                            .SingleOrDefault();

                return(Ok(_mapper.Map <ParticipationDto>(insertedParticipation)));
            }
            catch (Exception e)
            {
                _logger.LogError($"ERROR in CreateInvitation: {e.Message}");
                return(StatusCode(500, "Internal server error"));
            }
        }