public async Task <IActionResult> Put(string id, [FromBody] VirtualSession virtualSession) { var storedVirtualSession = await _virtualSessionsStorage.GetItemAsync(id); if (storedVirtualSession.VolunteerId == Guid.Empty) { storedVirtualSession.VolunteerId = virtualSession.VolunteerId; storedVirtualSession.TimePreferenceOne = virtualSession.TimePreferenceOne.ToUniversalTime(); storedVirtualSession.TimePreferenceTwo = virtualSession.TimePreferenceTwo.ToUniversalTime(); storedVirtualSession.TimePreferenceThree = virtualSession.TimePreferenceThree.ToUniversalTime(); storedVirtualSession.TimePreferenceSelected = virtualSession.TimePreferenceSelected.ToUniversalTime(); var volunteer = await _membersStorage.GetItemAsync(virtualSession.VolunteerId.ToString()); var educator = await _membersStorage.GetItemAsync(storedVirtualSession.EducatorId.ToString()); try { var teamsMeeting = await _graphService.CreateTeamsMeeting(); await _graphService.ScheduleOnlineMeeting(virtualSession.TimePreferenceSelected, volunteer, educator, teamsMeeting); await _virtualSessionsStorage.UpdateItemAsync(id, storedVirtualSession); return(new OkResult()); } catch { return(new BadRequestObjectResult(new ErrorResponseDto(ValidationResponseHelper.MeetingCreationError))); } } return(new BadRequestObjectResult(new ErrorResponseDto(ValidationResponseHelper.VirtualSessionAlreadyConfirmed))); }
public async Task <IActionResult> Post([FromBody] VirtualSession virtualSession) { virtualSession.Id = Guid.NewGuid(); virtualSession.VolunteerId = Guid.Empty; await _virtualSessionsStorage.CreateItemAsync(virtualSession); var volunteerEmails = await GetCurrentVolunteerEmails(); await _mailer.SendNewVirtualSessionMail(volunteerEmails, virtualSession.Id); return(new CreatedResult(Url.RouteUrl(virtualSession.Id), virtualSession)); }