public override async Task <IActionResult> Post([FromBody] MeetingViewModel viewModel) { var model = await Parse(viewModel); if (AuthoriseWrite(model)) { model.Participants = viewModel.Attendees.Select(f => f.Id).ToList(); var attendCheck = new AttendCheck() { CurrentUser = CurrentUser, DataHandler = DataHandler, LogicHandler = LogicHandler, Meeting = model }; await LogicHandler.Execute(attendCheck); if (attendCheck.Result) { await DataHandler.Commit(); return(Ok(ConfirmViewModel.CreateSuccess(attendCheck.Meeting))); } else { return(Ok(ConfirmViewModel.CreateFailure("Failed to save Meeting"))); } } return(Unauthorized()); }
public async Task <IActionResult> Recur([FromBody] RecurViewModel viewModel) { var loader = new Loader <Meeting>() { Id = viewModel.MeetingId }; await DataHandler.Execute(loader); if (loader.Result == null) { return(NotFound()); } if (loader.Result.AuthorId == CurrentUser.Id || (loader.Result.TenantId == CurrentUser.TenantId && (CurrentUser.Right.CanAdmin || CurrentUser.Right.CanAuth)) || CurrentUser.Right.CanSuperuser) { var model = new Meeting() { Participants = loader.Result.Participants, AuthorId = CurrentUser.Id, AuthorName = CurrentUser.Name, TenantId = CurrentUser.TenantId, TenantName = CurrentUser.TenantName, MeetingTypeId = loader.Result.MeetingTypeId, RegionKey = CurrentUser.RegionKey, Text = loader.Result.Text, Name = loader.Result.Name, IsPrivate = loader.Result.IsPrivate, When = viewModel.When, PreviousId = loader.Result.Id, ForceNotify = false }; var attendCheck = new AttendCheck() { CurrentUser = CurrentUser, DataHandler = DataHandler, LogicHandler = LogicHandler, Meeting = model }; await LogicHandler.Execute(attendCheck); if (attendCheck.Result) { loader.Result.NextId = attendCheck.Meeting.Id; loader.Result.IsComplete = true; var persist = new Persist <Meeting> { Model = loader.Result }; await DataHandler.Execute(persist); if (persist.Confirm.Success) { await DataHandler.Commit(); return(Ok(ConfirmViewModel.CreateSuccess(attendCheck.Meeting))); } } return(Ok(ConfirmViewModel.CreateFailure("Failed to save Meeting"))); } return(Unauthorized()); }