///<inheritdoc/>
        public override async Task <bool> InitializeAsync()
        {
            bool result = await base.InitializeAsync();

            if (!result)
            {
                return(false);
            }

            Dictionary <string, object> parameters = new Dictionary <string, object>()
            {
                { nameof(Card.DeckId), Entity.DeckId }
            };
            ApiReply <List <PracticeHistoryEntry> > reply = await ApiConnector.GetAsync <PracticeHistoryEntry>(parameters);

            if (!reply.WasSuccessful)
            {
                NotificationMessageProvider.ShowErrorMessage(reply.ResultMessage);
                return(false);
            }

            PracticeHistoryEntries.AddRange(reply.Result);
            SelectableDisplayUnits.Add(EntityNameHelper.GetName <Deck>());
            SelectableDisplayUnits.AddRange(Entity.Cards.Select(card => card.GetDisplayName()));
            foreach (Card card in Entity.Cards)
            {
                cardIdLookup.Add(card.GetDisplayName(), card.CardId);
            }
            SelectedDisplayUnit = SelectableDisplayUnits.First();
            return(true);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="navigationManager">NavigationManager (Injected)</param>
 /// <param name="apiConnector">ApiConnector (Injected)</param>
 public DeckSearchViewModel(NavigationManager navigationManager, IApiConnector apiConnector)
     : base(navigationManager, apiConnector)
 {
     PracticeDeckCommand = new NavigationCommand(navigationManager)
     {
         CommandText       = Messages.Practice,
         IsRelative        = true,
         IsEnabledFunction = (parameter) => (parameter as Deck).CardCount > 0,
         ToolTip           = Messages.PracticeCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>()),
         TargetUriFactory  = (param) => $"/{(param as Deck).DeckId}/Practice"
     };
     AddCardCommand = new NavigationCommand(navigationManager)
     {
         CommandText      = Messages.NewCard,
         IsRelative       = true,
         ToolTip          = Components.Messages.NewCommandToolTip.FormatWith(EntityNameHelper.GetName <Card>()),
         TargetUriFactory = (param) => $"/{(param as Deck).DeckId}/Cards/New"
     };
     ShowStatisticsCommand = new NavigationCommand(navigationManager)
     {
         CommandText      = Messages.PracticeStatistics,
         IsRelative       = true,
         ToolTip          = Messages.ShowStatisticsCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>()),
         TargetUriFactory = (param) => $"/{(param as Deck).DeckId}/Statistics"
     };
 }
        public async Task LoadsPracticeHistoryEntriesOnIntializeTest()
        {
            Card card = new Card()
            {
                CardId = 1
            };

            card.Fields.Add(new CardField()
            {
                FieldId = 1, FieldName = "Field 1"
            });
            card.Fields.Add(new CardField()
            {
                FieldId = 2, FieldName = "Field 2"
            });
            PracticeHistoryEntry entry1 = new PracticeHistoryEntry()
            {
                Field = new CardField()
                {
                    FieldName = "Field 1"
                }
            };
            PracticeHistoryEntry entry2 = new PracticeHistoryEntry()
            {
                Field = new CardField()
                {
                    FieldName = "Field 2"
                }
            };
            ApiConnectorMock mock = new ApiConnectorMock();

            mock.Replies.Push(new ApiReply <List <PracticeHistoryEntry> >()
            {
                WasSuccessful = true,
                Result        = new List <PracticeHistoryEntry>()
                {
                    entry1, entry2
                }
            });
            mock.Replies.Push(new ApiReply <Card>()
            {
                WasSuccessful = true,
                Result        = card
            });
            CardStatisticsViewModel viewModel = new CardStatisticsViewModel(navigationManagerMock, mock);
            bool result = await viewModel.InitializeAsync();

            Assert.IsTrue(result);
            Assert.AreEqual(HttpMethod.Get, mock.Methods.Pop());
            Dictionary <string, object> parameters = mock.Parameters.Pop() as Dictionary <string, object>;

            Assert.AreEqual((long)1, parameters[nameof(Card.CardId)]);
            Assert.IsTrue(viewModel.PracticeHistoryEntries.Contains(entry1));
            Assert.IsTrue(viewModel.PracticeHistoryEntries.Contains(entry2));
            Assert.AreEqual(EntityNameHelper.GetName <Card>(), viewModel.SelectableDisplayUnits[0]);
            Assert.AreEqual(EntityNameHelper.GetName <Card>(), viewModel.SelectedDisplayUnit);
            Assert.IsTrue(viewModel.SelectableDisplayUnits.Contains("Field 1"));
            Assert.IsTrue(viewModel.SelectableDisplayUnits.Contains("Field 2"));
        }
Ejemplo n.º 4
0
 ///<inheritdoc/>
 public override string Validate(Card entity, long newValue)
 {
     if (newValue == default)
     {
         return(Errors.PropertyRequired.FormatWith(EntityNameHelper.GetName <CardTemplate>()));
     }
     return(null);
 }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="navigationManager">NavigationManager (Injected)</param>
        /// <param name="apiConnector">ApiConnetcor (Injected)</param>
        public HomeViewModel(NavigationManager navigationManager, IApiConnector apiConnector) : base(navigationManager)
        {
            this.apiConnector = apiConnector;

            PracticeDeckCommand = new NavigationCommand(navigationManager)
            {
                IsEnabledFunction = (parameter) => (parameter as Deck).CardCount > 0,
                TargetUriFactory  = (param) => $"/Decks/{(param as Deck).DeckId}/Practice",
                CommandText       = Messages.Practice,
                ToolTip           = Messages.PracticeCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>())
            };
            AddCardCommand = new NavigationCommand(navigationManager)
            {
                TargetUriFactory = (param) => $"/Decks/{(long)param}/Cards/New",
                CommandText      = Messages.NewCard,
                ToolTip          = Components.Messages.NewCommandToolTip.FormatWith(EntityNameHelper.GetName <Card>())
            };
            ShowStatisticsCommand = new NavigationCommand(navigationManager)
            {
                TargetUriFactory = (param) => $"/Decks/{(long)param}/Statistics",
                CommandText      = Messages.PracticeStatistics,
                ToolTip          = Messages.ShowStatisticsCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>())
            };
            NewDeckCommand = new NavigationCommand(navigationManager)
            {
                CommandText = Messages.NewDeck,
                TargetUri   = "/Decks/New",
                ToolTip     = Components.Messages.NewCommandToolTip.FormatWith(EntityNameHelper.GetName <Deck>())
            };
            NewTemplateCommand = new NavigationCommand(navigationManager)
            {
                CommandText = Messages.NewTemplate,
                TargetUri   = "/Templates/New",
                ToolTip     = Components.Messages.NewCommandToolTip.FormatWith(EntityNameHelper.GetName <CardTemplate>())
            };
            SearchDecksCommand = new NavigationCommand(navigationManager)
            {
                CommandText = Messages.SearchDecks,
                TargetUri   = "/Decks",
                ToolTip     = Messages.SearchCommandToolTip.FormatWith(EntityNameHelper.GetPluralName <Deck>())
            };
            SearchTemplatesCommand = new NavigationCommand(navigationManager)
            {
                CommandText = Messages.SearchTemplates,
                TargetUri   = "/Templates",
                ToolTip     = Messages.SearchCommandToolTip.FormatWith(EntityNameHelper.GetPluralName <CardTemplate>())
            };
            SearchCardsCommand = new NavigationCommand(navigationManager)
            {
                CommandText = Messages.SearchCards,
                TargetUri   = "/Cards",
                ToolTip     = Messages.SearchCommandToolTip.FormatWith(EntityNameHelper.GetPluralName <Card>())
            };
        }
Ejemplo n.º 6
0
        public async Task LoadsPracticeHistoryEntriesOnIntializeTest()
        {
            ApiConnectorMock mock = CreateApiConnectorMock(deck, true, new List <PracticeHistoryEntry>()
            {
                entry1, entry2
            });
            DeckStatisticsViewModel viewModel = new DeckStatisticsViewModel(navigationManagerMock, mock);
            bool result = await viewModel.InitializeAsync();

            Assert.IsTrue(result);
            Assert.AreEqual(HttpMethod.Get, mock.Methods.Pop());
            Dictionary <string, object> parameters = mock.Parameters.Pop() as Dictionary <string, object>;

            Assert.AreEqual((long)1, parameters[nameof(Deck.DeckId)]);
            Assert.IsTrue(viewModel.PracticeHistoryEntries.Contains(entry1));
            Assert.IsTrue(viewModel.PracticeHistoryEntries.Contains(entry2));
            Assert.AreEqual(EntityNameHelper.GetName <Deck>(), viewModel.SelectableDisplayUnits[0]);
            Assert.AreEqual(EntityNameHelper.GetName <Deck>(), viewModel.SelectedDisplayUnit);
            Assert.IsTrue(viewModel.SelectableDisplayUnits.Contains(card1.GetDisplayName()));
            Assert.IsTrue(viewModel.SelectableDisplayUnits.Contains(card2.GetDisplayName()));
        }
        public void SelectsDisplayedEntriesCorrectlyTest()
        {
            PracticeHistoryEntry entry1 = new PracticeHistoryEntry()
            {
                Field = new CardField()
                {
                    FieldName = "Field 1"
                }
            };
            PracticeHistoryEntry entry2 = new PracticeHistoryEntry()
            {
                Field = new CardField()
                {
                    FieldName = "Field 2"
                }
            };
            CardStatisticsViewModel viewModel = new CardStatisticsViewModel(navigationManagerMock, new ApiConnectorMock());

            viewModel.PracticeHistoryEntries.AddRange(new List <PracticeHistoryEntry>()
            {
                entry1, entry2
            });
            viewModel.SelectableDisplayUnits.Add(EntityNameHelper.GetName <Card>());
            viewModel.SelectableDisplayUnits.Add("Field 1");
            viewModel.SelectableDisplayUnits.Add("Field 2");

            viewModel.SelectedDisplayUnit = EntityNameHelper.GetName <Card>();
            Assert.AreEqual(2, viewModel.DisplayedEntries.Count());
            Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry1));
            Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry2));

            viewModel.SelectedDisplayUnit = "Field 1";
            Assert.AreEqual(1, viewModel.DisplayedEntries.Count());
            Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry1));

            viewModel.SelectedDisplayUnit = "Field 2";
            Assert.AreEqual(1, viewModel.DisplayedEntries.Count());
            Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry2));
        }
Ejemplo n.º 8
0
        public async Task SelectsDisplayedEntriesCorrectlyTest()
        {
            ApiConnectorMock mock = CreateApiConnectorMock(deck, true, new List <PracticeHistoryEntry>()
            {
                entry1, entry2
            });
            DeckStatisticsViewModel viewModel = new DeckStatisticsViewModel(navigationManagerMock, mock);
            await viewModel.InitializeAsync();

            viewModel.SelectedDisplayUnit = EntityNameHelper.GetName <Deck>();
            Assert.AreEqual(2, viewModel.DisplayedEntries.Count());
            Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry1));
            Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry2));

            viewModel.SelectedDisplayUnit = card1.GetDisplayName();
            Assert.AreEqual(1, viewModel.DisplayedEntries.Count());
            Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry1));

            viewModel.SelectedDisplayUnit = card2.GetDisplayName();
            Assert.AreEqual(1, viewModel.DisplayedEntries.Count());
            Assert.IsTrue(viewModel.DisplayedEntries.Contains(entry2));
        }
        /// <summary>
        /// Loads the Entity
        /// </summary>
        protected virtual async Task <bool> LoadEntityAsync()
        {
            ApiReply <TEntity> reply = await ApiConnector.GetAsync <TEntity>(Id);

            if (reply.WasSuccessful)
            {
                Entity = reply.Result;
                return(true);
            }
            else
            {
                if (reply.StatusCode == System.Net.HttpStatusCode.NotFound)
                {
                    NotificationMessageProvider.ShowErrorMessage(
                        Errors.EntityDoesNotExist.FormatWith(EntityNameHelper.GetName <TEntity>(), Id));
                }
                else
                {
                    NotificationMessageProvider.ShowErrorMessage(reply.ResultMessage);
                }
                return(false);
            }
        }
        public void GetNameOfUserTest()
        {
            string name = EntityNameHelper.GetName <User>();

            Assert.AreEqual("User", name);
        }
        public void GetNameOfCardTemplateTest()
        {
            string name = EntityNameHelper.GetName <CardTemplate>();

            Assert.AreEqual("Template", name);
        }
        public void GetNameOfDeckTest()
        {
            string name = EntityNameHelper.GetName <Deck>();

            Assert.AreEqual("Deck", name);
        }
Ejemplo n.º 13
0
 ///<inheritdoc/>
 ///<inheritdoc/>
 public string GetDisplayName()
 => EntityNames.EntityDisplayNameFormat.FormatWith(EntityNameHelper.GetName <CardTemplate>(), Title);
Ejemplo n.º 14
0
 ///<inheritdoc/>
 public string GetDisplayName()
 => EntityNames.EntityDisplayNameFormat.FormatWith(EntityNameHelper.GetName <Card>(), CardId);
Ejemplo n.º 15
0
 ///<inheritdoc/>
 public string GetDisplayName()
 => EntityNames.EntityDisplayNameFormat.FormatWith(EntityNameHelper.GetName <User>(), Email);