public async Task <IActionResult> Create(ActionItemViewModel actionItemModel)
        {
            ModelState.Remove("actionItem.User");
            ModelState.Remove("actionItem.UserId");

            if (ModelState.IsValid)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await actionItemModel.ActionItemImage.CopyToAsync(memoryStream);

                    actionItemModel.actionItem.ActionItemImage = memoryStream.ToArray();
                }

                var currentUser = await GetCurrentUserAsync();

                actionItemModel.actionItem.UserId = currentUser.Id;

                _context.Add(actionItemModel.actionItem);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Details", new { id = actionItemModel.actionItem.ActionItemId }));
            }

            SelectList compliancePlans = new SelectList(_context.CompliancePlan, "CompliancePlanId", "Label");
            // Add a 0 option to the select list
            SelectList compliancePlans0 = CompliancePlanDropdown(compliancePlans);

            actionItemModel.compliancePlans = compliancePlans0;

            return(View(actionItemModel));
        }
        public void NotifyPropertyChangedTest()
        {
            var vm = new ActionItemViewModel();

            TestsHelper.TestPropertyWithNotifyPropertyChanged(vm, () => vm.Password);
            TestsHelper.TestPropertyWithNotifyPropertyChanged(vm, () => vm.Comments);
            TestsHelper.TestPropertyWithNotifyPropertyChanged(vm, () => vm.ApprovalMemberStatus);
        }
 public static ActionItem FromActionItemViewModel(ActionItemViewModel viewModel)
 {
     return(new ActionItem()
     {
         PlanningWizardActionItemID = viewModel.ActionItemId,
         IsComplete = viewModel.Complete,
         ResourcesContent = viewModel.ResourceHtml
     });
 }
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="game">The game</param>
 /// <param name="displayName">The display name</param>
 /// <param name="iconSource">The icon source</param>
 /// <param name="isDemo">Indicates if the game is a demo</param>
 /// <param name="mainAction">The main action</param>
 /// <param name="secondaryAction">The secondary action</param>
 /// <param name="launchActions">The launch actions</param>
 public Page_Games_GameViewModel(Games game, string displayName, string iconSource, bool isDemo, ActionItemViewModel mainAction, ActionItemViewModel?secondaryAction, IEnumerable <OverflowButtonItemViewModel>?launchActions)
 {
     Game            = game;
     DisplayName     = displayName;
     IconSource      = iconSource;
     IsDemo          = isDemo;
     MainAction      = mainAction;
     SecondaryAction = secondaryAction;
     LaunchActions   = launchActions ?? Array.Empty <OverflowButtonItemViewModel>();
 }
        public void InitializeTest()
        {
            var actionManagerVM = Mock.Create<ActionManagerViewModel>();

            var actionItemInfo = new ActionItemInfo(123,
                                                    "ProcessName",
                                                    "7FA27365-AF0A-4F98-A927-368D21A8175A",
                                                    321,
                                                    "Name",
                                                    "Subject",
                                                    "Message",
                                                    ActionTypes.Approval,
                                                    "GroupName",
                                                    new DateTime(2012, 1, 16),
                                                    true,
                                                    false);

            var vm = new ActionItemViewModel();
            var changedProperties = new List<string>();

            vm.PropertyChanged += (o, e) => changedProperties.Add(e.PropertyName);

            var dynamicManagerMock = Mock.Create<IDynamicTypeManager>();

            Mock.Arrange(() => dynamicManagerMock.BeginGetEditableRoot(Constants.ActionItemsProcessName, 1, Arg.IsAny<Action<object, DataPortalResult<IEditableRoot>>>()))
                .DoInstead<string, int, Action<object, DataPortalResult<IEditableRoot>>>(
                    (processName, id, callback) =>
                        {
                            var result = new DataPortalResult<IEditableRoot>(null, null, null);
                            callback(null, result);
                        });

            vm.DynamicManager = dynamicManagerMock;

            vm.Initialize(actionItemInfo, actionManagerVM);

            Assert.AreSame(actionItemInfo, vm.Model);
            Assert.AreSame(actionManagerVM, vm.ParentViewModel);
            Assert.AreEqual(actionItemInfo.Subject, vm.Subject);
            Assert.AreEqual(actionItemInfo.Message, vm.Description);
            Assert.AreEqual(actionItemInfo.GroupName, vm.GroupName);
            Assert.AreEqual(actionItemInfo.DueDate, vm.DueDate);
            Assert.AreEqual(actionItemInfo.IsActionNew, vm.IsActionNew);

            Assert.IsTrue(changedProperties.Contains("Model"));
            Assert.IsTrue(changedProperties.Contains("AcknowledgeVisible"));
            Assert.IsTrue(changedProperties.Contains("AcknowledgeCollapse"));
            Assert.IsTrue(changedProperties.Contains("Subject"));
            Assert.IsTrue(changedProperties.Contains("Description"));
            Assert.IsTrue(changedProperties.Contains("GroupName"));
            Assert.IsTrue(changedProperties.Contains("DueDate"));
            Assert.IsTrue(changedProperties.Contains("IsLate"));
            Assert.IsTrue(changedProperties.Contains("IsActionNew"));
        }
        public IActionResult Create()
        {
            ActionItemViewModel actionItemModel = new ActionItemViewModel();

            SelectList compliancePlans = new SelectList(_context.CompliancePlan, "CompliancePlanId", "Label");
            //ViewData["UserId"] = new SelectList(_context.ApplicationUsers, "Id", "Id");
            //return View();
            // Add a 0 option to the select list
            SelectList compliancePlans0 = CompliancePlanDropdown(compliancePlans);

            actionItemModel.compliancePlans = compliancePlans0;

            return(View(actionItemModel));
        }
        public JsonResult JsonUpdateActionItem(ActionItemViewModel viewModel)
        {
            return(JsonResponse(() =>
            {
                var actionItem = FromActionItemViewModel(viewModel);

                var existing = _planningService.GetActionItem(actionItem.PlanningWizardActionItemID);

                if (existing == null)
                {
                    throw new Exception("Invalid Action Item.  Cannot update");
                }

                existing.ResourcesContent = actionItem.ResourcesContent;
                existing.ModifyUserID = CurrentUser.UserID;
                existing.ModifyDate = DateTime.Now;

                _planningService.UpdateActionItem(ref existing);
            }));
        }
        public ActionItemViewModel BuildActionItemViewModel(IActionsViewModelFactoryItem item, IssueAction issueAction, Issue issue)
        {
            // ReSharper disable once UseObjectOrCollectionInitializer
            // Suppressed as Title is sometimes built from BuildViewModel

            var actionsBasePath = issueAction.IsPrimary ? "Actions/{0}" : "Actions/Small/{0}";

            var model = new ActionItemViewModel
            {
                ActionView  = actionsBasePath.FormatString(item.ActionView),
                ActionModel = item.BuildViewModel(issue, issueAction)
            };

            model.Title                    = item.Title;
            model.Eta                      = item.Eta;
            model.BasicContent             = item.BasicContent;
            model.IsPrimary                = issueAction.IsPrimary;
            model.DistributeOverTwoColumns = issueAction.IsPrimary && item.DistributeOverTwoColumns;

            return(model);
        }
        public void PropertiesTest()
        {
            var vm = new ActionItemViewModel();

            TestsHelper.TestPublicPropertiesGetSet(vm);
        }
        public void WhenPasswordIsEmptyCannotSignOff()
        {
            // Arrange.
            var vm = new ActionItemViewModel { ApprovalMemberStatus = ApprovalMemberResults.Approved, Password = string.Empty };

            // Assert.
            Assert.IsFalse(vm.SignOffCommand.CanExecute(null));

            // Act.
            vm.Password = "******";

            // Assert.
            Assert.IsTrue(vm.SignOffCommand.CanExecute(null));
        }
        public void SelectingItemShouldMakeActionOld()
        {
            var vm = new ActionManagerViewModel();
            var item = new ActionItemViewModel();
            var newActionItem = new ActionItemInfo(1, "test", Guid.NewGuid().ToString(), 1, "name", "subj", "message", ActionTypes.Approval, "group", DateTime.Now, true, false);
            var oldActionItem = new ActionItemInfo(1, "test", Guid.NewGuid().ToString(), 1, "name", "subj", "message", ActionTypes.Approval, "group", DateTime.Now, false, false);
            Mock.Arrange(() => item.Model).Returns(newActionItem);

            var cmd = new MarkActionItemOldCommand();
            Mock.Arrange(() => cmd.ActionItemId).Returns(1);
            Mock.Arrange(() => cmd.Result).Returns(oldActionItem);
            Mock.Arrange(() => MarkActionItemOldCommand.BeginExecute(1, Arg.IsAny<EventHandler<DataPortalResult<MarkActionItemOldCommand>>>())).DoInstead((EventHandler<DataPortalResult<MarkActionItemOldCommand>> e) => e(null, new DataPortalResult<MarkActionItemOldCommand>(cmd, null, null)));

            vm.ActionItems.Add(item);
            vm.SelectedAction = item;

            Assert.AreEqual(1, vm.SelectedAction.Model.Id);
            Assert.IsFalse(vm.SelectedAction.IsActionNew);
        }
 public void ViewFileCommand()
 {
     var vm = new ActionItemViewModel();
     
     vm.ViewFileCommand.Execute(null);
 }
        public void WhenApprovalIsRejectedAndCommentsIsEmptyCannotSignOff()
        {
            var vm = new ActionItemViewModel {ApprovalMemberStatus = ApprovalMemberResults.Rejected, Password = "******", Comments = null};

            Assert.IsFalse(vm.SignOffCommand.CanExecute(null));

            vm.Comments = "Test";

            Assert.IsTrue(vm.SignOffCommand.CanExecute(null));
        }
        public void AcknowledgeCollapseTest()
        {
            var actionManagerVM = Mock.Create<ActionManagerViewModel>();

            var actionItemInfo = new ActionItemInfo(
                123,
                "ProcessName",
                "7FA27365-AF0A-4F98-A927-368D21A8175A",
                321,
                "Name",
                "Subject",
                "Message",
                ActionTypes.Approval,
                "GroupName",
                DateTime.MinValue,
                true,
                false);

            var vm = new ActionItemViewModel();

            var dynamicManagerMock = Mock.Create<IDynamicTypeManager>();

            Mock.Arrange(() => dynamicManagerMock.BeginGetEditableRoot(Constants.ActionItemsProcessName, 1, Arg.IsAny<Action<object, DataPortalResult<IEditableRoot>>>()))
                .DoInstead<string, int, Action<object, DataPortalResult<IEditableRoot>>>(
                    (processName, id, callback) =>
                        {
                            var result = new DataPortalResult<IEditableRoot>(null, null, null);
                            callback(null, result);
                        });

            vm.DynamicManager = dynamicManagerMock;

            vm.Initialize(actionItemInfo, actionManagerVM);

            Assert.AreEqual(Visibility.Visible, vm.AcknowledgeCollapse);

            actionItemInfo = new ActionItemInfo(
                123,
                "ProcessName",
                "7FA27365-AF0A-4F98-A927-368D21A8175A",
                321,
                "Name",
                "Subject",
                "Message",
                ActionTypes.Assignment,
                "GroupName",
                DateTime.MinValue,
                true,
                false);

            vm.Initialize(actionItemInfo, actionManagerVM);

            Assert.AreEqual(Visibility.Collapsed, vm.AcknowledgeCollapse);
        }
        public void RejectCommandTest()
        {
            const string showPassword = "******";
            var vm = new ActionItemViewModel {CurrentVisualState = string.Empty, ApprovalMemberStatus = ApprovalMemberResults.Undecided};

            vm.RejectCommand.Execute(null);

            Assert.AreEqual(showPassword, vm.CurrentVisualState);
            Assert.AreEqual(ApprovalMemberResults.Rejected, vm.ApprovalMemberStatus);
        }
        public void ActionCommandTest()
        {
            const string showActions = "ShowActions";
            const string showText = "ShowText";

            var vm = new ActionItemViewModel {CurrentVisualState = string.Empty};

            vm.ActionCommand.Execute(null);

            Assert.AreEqual(showActions, vm.CurrentVisualState);

            vm.ActionCommand.Execute(null);

            Assert.AreEqual(showText, vm.CurrentVisualState);

            vm.ActionCommand.Execute(null);

            Assert.AreEqual(showActions, vm.CurrentVisualState);
        }
        public void OpenScreenCommandOpensIntegrationEvent()
        {
            // Arrange.
            var actionItem = new ActionItemInfo(
                123,
                Constants.IntegrationEventProcessName,
                "7FA27365-AF0A-4F98-A927-368D21A8175A",
                321,
                "Integration Service Failed",
                "Subject",
                "Message",
                ActionTypes.Assignment,
                "GroupName",
                DateTime.MinValue,
                true,
                true);

            var windowManager = Mock.Create<IShell>(Behavior.Loose);
            var actionManager = new ActionManagerViewModel();
            var integrationEventViewModel = Mock.Create<IIntegrationEventViewModel>(Behavior.Loose);
            var integrationEventViewModelFactory = Mock.Create<IIntegrationEventViewModelFactory>(Behavior.Loose);
            Mock.Arrange(() => integrationEventViewModelFactory.CreateViewModel()).Returns(integrationEventViewModel);

            var viewModel = new ActionItemViewModel { WindowManager = windowManager, IntegrationEventViewModelFactory = integrationEventViewModelFactory };
            viewModel.Initialize(actionItem, actionManager);

            // Act.
            viewModel.OpenScreenCommand.Execute(null);

            // Assert.
            Mock.Assert(() => integrationEventViewModel.LoadEvent(321), Occurs.Once());
            Mock.Assert(() => windowManager.ShowTaskWindow(integrationEventViewModel, true), Occurs.Once());
        }
        public void SelectingItemShouldMakeItemSelectedAndDeselectPrevious()
        {
            var vm = new ActionManagerViewModel();
            var item1 = new ActionItemViewModel();
            var item2 = new ActionItemViewModel();
            var newActionItem = new ActionItemInfo(1, "test", Guid.NewGuid().ToString(), 1, "name", "subj", "message", ActionTypes.Approval, "group", DateTime.Now, true, false);
            Mock.Arrange(() => item2.Model).Returns(newActionItem);

            var cmd = new MarkActionItemOldCommand();
            Mock.Arrange(() => cmd.ActionItemId).Returns(1);
            Mock.Arrange(() => MarkActionItemOldCommand.BeginExecute(1, Arg.IsAny<EventHandler<DataPortalResult<MarkActionItemOldCommand>>>())).DoNothing();

            vm.ActionItems.Add(item1);
            vm.ActionItems.Add(item2);

            vm.SelectedAction = item1;
            Assert.IsTrue(item1.IsSelected);

            vm.SelectedAction = item2;
            Assert.IsFalse(item1.IsSelected);
            Assert.IsTrue(item2.IsSelected);
        }
        public void OpenScreenCommandTest()
        {
            var actionManagerVM = Mock.Create<ActionManagerViewModel>();

            var actionItemInfo = new ActionItemInfo(
                123,
                "ProcessName",
                "7FA27365-AF0A-4F98-A927-368D21A8175A",
                321,
                "Name",
                "Subject",
                "Message",
                ActionTypes.Approval,
                "GroupName",
                DateTime.MinValue,
                true,
                false);

            var detailsMock = Mock.Create<IDetailsViewModel>();
            var shellMock = Mock.Create<IShell>();

            var vm = new ActionItemViewModel
                         {
                             DetailsViewModelFactory = new ExportFactory<IDetailsViewModel>(() => new Tuple<IDetailsViewModel, Action>(detailsMock, () => { })),
                             WindowManager = shellMock
                         };

            var dynamicManagerMock = Mock.Create<IDynamicTypeManager>();

            Mock.Arrange(() => dynamicManagerMock.BeginGetEditableRoot(Constants.ActionItemsProcessName, 1, Arg.IsAny<Action<object, DataPortalResult<IEditableRoot>>>()))
                .DoInstead<string, int, Action<object, DataPortalResult<IEditableRoot>>>(
                    (processName, id, callback) =>
                        {
                            var result = new DataPortalResult<IEditableRoot>(null, null, null);
                            callback(null, result);
                        });

            vm.DynamicManager = dynamicManagerMock;

            vm.Initialize(actionItemInfo, actionManagerVM);
            vm.IsDetailOpen = true;

            vm.OpenScreenCommand.Execute(null);

            Assert.IsFalse(vm.IsDetailOpen);
            Mock.Assert(() => detailsMock.Refresh(actionItemInfo.ProcessName, actionItemInfo.ItemId), Occurs.Once());
            Mock.Assert(() => shellMock.ShowTaskWindow(detailsMock, true), Occurs.Once());
        }
        public void CloseDetailCommandTest()
        {
            var actionManagerVm = Mock.Create<ActionManagerViewModel>();
            var vm = new ActionItemViewModel()
            {
                ParentViewModel = actionManagerVm,
                IsDetailOpen = true
            };

            vm.CloseDetailCommand.Execute(null);

            Assert.IsFalse(vm.IsDetailOpen);
        }