示例#1
0
        public async Task MeetingControllerRecurUnauthorised()
        {
            var data  = new MeetingApiDataHandler();
            var logic = new InteractApiLogicHandler();

            var viewModel = new RecurViewModel()
            {
                MeetingId = MeetingData.FirstId, When = DateHelper.FormatDayStart(DateTime.UtcNow)
            };

            data.Result.Setup(m => m.Execute(It.IsAny <Loader <Meeting> >())).Returns(MeetingData.GetFirst());

            var controller = new MeetingController(data, logic)
            {
                CurrentUser = NonTenantUser
            };
            var result = await controller.Recur(viewModel) as UnauthorizedResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <UnauthorizedResult>();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <Loader <Meeting> >()), Times.Once);
            data.Result.Verify(s => s.Execute(It.IsAny <Persist <Meeting> >()), Times.Never());
        }
示例#2
0
        public async Task MeetingControllerRecurAttendFail()
        {
            var data  = new MeetingApiDataHandler();
            var logic = new InteractApiLogicHandler();

            var viewModel = new RecurViewModel()
            {
                MeetingId = MeetingData.FirstId, When = DateHelper.FormatDayStart(DateTime.UtcNow)
            };

            data.Result.Setup(m => m.Execute(It.IsAny <Loader <Meeting> >())).Returns(MeetingData.GetFirst());
            data.Result.Setup(m => m.Execute(It.IsAny <Persist <Meeting> >())).Returns(MeetingData.GetSecond());
            logic.Result.Setup(m => m.Execute(It.IsAny <AttendCheck>())).Returns(false);

            var controller = new MeetingController(data, logic)
            {
                CurrentUser = StandardUser
            };
            var result = await controller.Recur(viewModel) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();
            result.Value.Should().NotBeNull();

            var check = result.Value as ConfirmViewModel;

            check.Success.Should().BeFalse();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <Loader <Meeting> >()), Times.Once);
            data.Result.Verify(s => s.Execute(It.IsAny <Persist <Meeting> >()), Times.Never());
        }
示例#3
0
        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());
        }