public async Task <ActionResult> Update(MeetingUpdateDTO dto) { try { await _meetingRepository.UpdateFromDTOAsync(dto); } catch (System.Exception ex) { return(Problem(ex.Message)); } return(Ok()); }
/// <summary> /// Update a existing meeting from DTO. /// </summary> public async Task UpdateFromDTOAsync(MeetingUpdateDTO dto) { var meeting = await this.Get(dto.MeetingID); meeting.Title = dto.Title ?? meeting.Title; meeting.Description = dto.Description ?? meeting.Description; meeting.RepeatType = dto.RepeatType ?? meeting.RepeatType; meeting.FromDate = dto.FromDate ?? meeting.FromDate; meeting.ToDate = dto.ToDate ?? meeting.ToDate; if (await ValidateMeetingAsync(meeting)) { var attendees = await _userRepository.Find(u => dto.Attendees.Contains(u.ID)).ToListAsync(); if (attendees.Count() != 0) { meeting.Attendees = null; await this.Update(meeting); var t = await this.Get(dto.MeetingID); t.Attendees = attendees; await this.Update(t); } else { await this.Update(meeting); } await _mailService.SendMail( $"Your meeting '{meeting.Title}' is updated", $"<p>The meeting '{meeting.Title}' have been updated</p>" + $"<p>Description: { (String.IsNullOrEmpty(meeting.Description) ? "Empty" : meeting.Description) }</p>" + $"<p>The Host: { meeting.Creator.Name }</p>" + $"<p>The location is {meeting.Location.Name}</p>" + $"<p>The Departments of this meeting is {String.Join(",", meeting.Departments.Select(x => x.Name))} </p>" + $"<p>The meeting will start on {meeting.FromDate}. End on {meeting.ToDate} </p>", MailType.MeetingUpdated, meeting.Attendees.Select(x => x.Email) ); } }