public static bool AreEqual(ReadingCategory <ReadingWord> expected, ReadingCategory <ReadingWord> actual)
 {
     AreEqual(expected.Title, actual.Title);
     AreEqual(expected.ReadingCards, actual.ReadingCards, AreEqual);
     AreEqual(expected.ActivityStatus, actual.ActivityStatus);
     return(true);
 }
        protected override ReadingCategory <ReadingWord> FromVmToUnitToAdd(ReadingCategoryToAddVM toAdd)
        {
            var category = new ReadingCategory <ReadingWord>(toAdd.Title,
                                                             toAdd.OnTheCards.Select(x => new ReadingWord(x)), new Planned());

            return(category);
        }
        public async Task <ReadingCategory <ReadingWord> > Add(ReadingCategory <ReadingWord> toAdd)
        {
            var dto = toAdd.ToDTO(ProgramId);

            if (dto.ActivityStatus.Type == ActivityStatusType.Planned && dto.ActivityStatus.SortingIndex < 0)
            {
                await SetSortIndexToLast(dto);
            }

            var nbrOfExistingCategoriesWithName = await _session.Query <ReadingCategoryDTO <ReadingWordDTO> >()
                                                  .CountAsync(x => x.Title.StartsWith(dto.Title));

            if (nbrOfExistingCategoriesWithName > 0)
            {
                dto.Title = dto.Title + " " + (nbrOfExistingCategoriesWithName + 1);
            }

            foreach (var card in dto.Cards)
            {
                var dictionaryResults = await _dictionary.LookupWord(card.Text);

                card.BaseDictionaryWord = dictionaryResults.FirstOrDefault()?.Word ?? card.Text;
            }

            await _session.StoreAsync(dto);

            await _session.SaveChangesAsync();

            return(dto.ToCategory());
        }
        public static ReadingCategory <ReadingWord> ToCategory(this ReadingCategoryDTO <ReadingWordDTO> dto)
        {
            var category = new ReadingCategory <ReadingWord>(dto.Id, dto.Title,
                                                             dto.Cards.Select(x => x.ToReadingWord()),
                                                             dto.ActivityStatus.ToStatus(),
                                                             dto.Sessions.Select(s => new ActivitySession(s.ChildId, s.DateTime)));

            return(category);
        }
Пример #5
0
        public static ReadingCategoryVM ToReadingCategoryVM(this ReadingCategory <ReadingWord> category)
        {
            var vm = new ReadingCategoryVM
            {
                Id    = category.Id,
                Title = category.Title,
                Cards = category.ReadingCards.Select(x => x.TextOnTheCard)
            };

            return(vm);
        }
        public static ReadingCategoryDTO <ReadingWordDTO> ToDTO(this ReadingCategory <ReadingWord> category, string programId)
        {
            var dto = new ReadingCategoryDTO <ReadingWordDTO>
            {
                ProgramId      = programId,
                Title          = category.Title,
                Cards          = category.ReadingCards.Select(x => x.ToDTO()),
                ActivityStatus = category.ActivityStatus.ToDTO(),
                Sessions       = category.CompletedSessions.Select(x => new ActivitySessionDTO {
                    ChildId = x.ChildId, DateTime = x.DateStamp
                }).ToList()
            };

            return(dto);
        }
        public async Task <ReadingCategory <ReadingWord> > Edit(string id, ReadingCategory <ReadingWord> toEditTo)
        {
            var category = await _session.LoadAsync <ReadingCategoryDTO <ReadingWordDTO> >(id);

            if (category == null)
            {
                _logger.Warning("No category with id {categoryId} found to update", id);
                throw new CategoryNotFoundException();
            }

            category.Title = toEditTo.Title;
            category.Cards = toEditTo.ReadingCards.Select(x => x.ToDTO());
            _logger.ForContext("CategoryId", id).Information("Updated category with new title and cards");

            await _session.SaveChangesAsync();

            _logger.Information("Saved session in db");

            return(category.ToCategory());
        }
        public static bool AreEqual(ReadingCategory <ReadingWord> expected, object actual)
        {
            var actualCategory = actual as ReadingCategoryVM;

            return(AreEqual(expected, actualCategory));
        }
 public static bool AreEqual(ReadingCategory <ReadingWord> expected, ReadingCategoryVM actual)
 {
     AreEqual(expected.Title, actual.Title);
     AreEqual(expected.ReadingCards.Select(x => x.TextOnTheCard), actual.Cards, AreEqual);
     return(true);
 }
 protected override object MapToVm(ReadingCategory <ReadingWord> element)
 {
     return(element.ToReadingCategoryVM());
 }