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); } }
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"); }
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")); } }