private void ApplyMeetingEvent(MeetingEvent @event) { _readModelCollection[@event.MeetingId].Apply( readModel => readModel.Integrate(@event), () => _logger.LogError($"Can't apply meeting event, Meeting {@event.MeetingId} not found") ); }
public ActionResult ModifyMeeting(MeetingViewModel meetingViewModel, string meetingId) { Meeting meeting = null; ReturnResult result = new ReturnResult(); if (ModelState.IsValid) { meeting = _context.Meetings.Find(new Guid(meetingId)); Attendee attendee = meeting.Attendee; attendee.SetAttendeeMailAddresses(meetingViewModel.AttendeeEmails, _context); meeting.Attendee = attendee; meeting.BeginningTime = meetingViewModel.StartDateTime; meeting.EndTime = meetingViewModel.EndDateTime; meeting.MeetingSubject = meetingViewModel.MeetingSubject; meeting.MeetingContent = meetingViewModel.MeetingContent; result = _meetingService.ModifyMeeting(meeting); if (result.Result) { MeetingEvent meetingEvent = new MeetingEvent(); meetingEvent.Id = meeting.Id.ToString(); meetingEvent.Title = meeting.MeetingSubject; meetingEvent.StartDateTime = meeting.BeginningTime; meetingEvent.EndDateTime = meeting.EndTime; var returnSuccess = new { isSuccess = true, eventdetail = meetingEvent }; return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(returnSuccess), "application/json")); } else { ModelState.AddModelError("", result.Message); } } var returnFail = new { isSuccess = false, // ModelState错误信息 ModelStateErrors = ModelState.Where(x => x.Value.Errors.Count > 0) .ToDictionary(k => k.Key, k => k.Value.Errors.Select(e => e.ErrorMessage).ToArray()) }; return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(returnFail), "application/json")); }
public ActionResult CreateMeeting(MeetingViewModel meetingViewModel, string meetingRoomId) { Meeting meeting = null; if (ModelState.IsValid) { ReturnResult result = new ReturnResult(); try { meeting = new Meeting(); Attendee attendee = new Attendee(); attendee.Id = Guid.NewGuid(); //解析用户输入的与会人邮箱地址,然后构建attendee,此处没有处理用户错误输入例外 attendee.SetAttendeeMailAddresses(meetingViewModel.AttendeeEmails, _context); User owner = _context.Users.Find(HttpContext.User.Identity.GetUserId()); MeetingRoom meetingRoom = _context.MeetingRooms.Find(meetingRoomId); //下面是使用输入内容初始化新会议 meeting.Id = Guid.NewGuid(); meeting.Owner = owner; meeting.BeginningTime = meetingViewModel.StartDateTime; meeting.EndTime = meetingViewModel.EndDateTime; meeting.MeetingSubject = meetingViewModel.MeetingSubject; meeting.MeetingRoom = meetingRoom; meeting.MeetingContent = meetingViewModel.MeetingContent; meeting.Attendee = attendee; meeting.IsCanceled = false; result = _meetingService.CreatingMeeting(meeting); } catch (InvalidOperationException invalidOperationException) { ModelState.AddModelError("", invalidOperationException.Message); } catch (Exception e) { _logger.Error(e.Message, e); } if (result.Result) { MeetingEvent meetingEvent = new MeetingEvent(); meetingEvent.Id = meeting.Id.ToString(); meetingEvent.Title = meeting.MeetingSubject; meetingEvent.StartDateTime = meeting.BeginningTime; meetingEvent.EndDateTime = meeting.EndTime; var returnSuccess = new { isSuccess = true, eventdetail = meetingEvent }; return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(returnSuccess), "application/json")); } else { ModelState.AddModelError("", result.Message); } } var returnFail = new { isSuccess = false, // ModelState错误信息 ModelStateErrors = ModelState.Where(x => x.Value.Errors.Count > 0) .ToDictionary(k => k.Key, k => k.Value.Errors.Select(e => e.ErrorMessage).ToArray()) }; return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(returnFail), "application/json")); }
private IEnumerable <MeetingsListEvent> HandleMeetingEvent(MeetingEvent meetingEvent) { _logger.LogInformation($"Received {meetingEvent}"); return(_readModel.Integrate(meetingEvent)); }
private void ApplyMeetingEvent(MeetingEvent @event) { _readModel.Integrate(@event); }
public IEnumerable <MeetingsListEvent> Integrate(MeetingEvent @event) => @event.Match( itemAddedToAgenda => IncrementAgendaItemCount(itemAddedToAgenda.MeetingId) );
public IEnumerable <MeetingViewEvent> Integrate(MeetingEvent meetingEvent) => meetingEvent.Match(itemAddedToAgenda => AddToAgenda(itemAddedToAgenda.AgendaItemId, itemAddedToAgenda.Description));