public ActionResult<CreateDeckResponse> CreateDeck(int count)
        {
            var deck = _deckCardsInterractor.Create(count);
            _deckRepository.Insert(deck);

            var response =  _mapper.Map<CreateDeckResponse>(deck);
            response.Remaining = deck.Cards.Count;

            return Ok(response);
        }
Пример #2
0
        public async Task <IActionResult> Insert([FromBody] System.Text.Json.JsonElement value)
        {
            try
            {
                Deck deck = JsonConvert.DeserializeObject <Deck>(value.GetRawText());


                await deckRepository.Insert(deck);

                await userDeckRepository.Insert(
                    new UserDeck { User_Id = Guid.Parse(deck.Author), Deck_Id = deck.Deck_Id });

                deckRepository.Save();

                logger.LogInformation("------------> Deck/s have been added <------------");
                return(Ok());
            }
            catch (Exception ex)
            {
                logger.LogWarning("------------> An error has occurred <------------ \n" + ex.Message);
                return(BadRequest(ex.Message));
            }
        }
Пример #3
0
        public async Task <int> Invoke(UpdateDeckParams param)
        {
            var oldDeck = deckRepository.FindStaticById(param.NewDeck.Deck_Id);

            try
            {
                var mappedOldCards = oldDeck.Cards;
                var newDeck        = param.NewDeck;

                if (oldDeck.Icon != newDeck.Icon)
                {
                    var fileMD5  = _authUtils.GetMd5HashString(newDeck.Icon.ToString());
                    var filePath = _authUtils.GetFilePathFromMD5(fileMD5);
                    _fileRepository.Insert(new File {
                        File_Id = newDeck.Icon, Md5 = fileMD5, Path = filePath, Size = 0, Type = "",
                    });
                }

                //update entries
                oldDeck.Category_Name         = newDeck.Category_Name;
                oldDeck.Icon                  = newDeck.Icon;
                oldDeck.Title                 = newDeck.Title;
                oldDeck.Description           = newDeck.Description;
                oldDeck.Is_Private            = newDeck.Is_Private;
                oldDeck.Available_Quick_Train = newDeck.Available_Quick_Train;
                oldDeck.LastUpdate            = DateTime.Now;

                var cardsToAdd    = SortCardsToAdd(mappedOldCards, param.NewDeck.Cards);
                var cardsToDelete = SortCardsToDelete(mappedOldCards, param.NewDeck.Cards);
                var cardsToUpdate = SortCardsToUpdate(mappedOldCards, param.NewDeck.Cards);
                if (cardsToAdd.Count != 0)
                {
                    foreach (Card card in cardsToAdd)
                    {
                        card.Parent_Deck_Id = param.NewDeck.Deck_Id;
                    }
                    await cardRepository.InsertAsync(cardsToAdd);
                }

                if (cardsToDelete.Count != 0)
                {
                    cardRepository.Delete(cardsToDelete);
                    foreach (Card card in cardsToDelete)
                    {
                        oldDeck.Cards.Remove(card);
                    }
                }

                if (cardsToUpdate.Count != 0)
                {
                    foreach (Card card in cardsToUpdate)
                    {
                        card.Parent_Deck_Id = newDeck.Deck_Id;
                    }
                    await cardRepository.UpdateAsync(cardsToUpdate);
                }

                deckRepository.Save();
                return(0);
            }
            catch (Exception e)
            {
                deckRepository.Delete(param.NewDeck.Deck_Id);
                await deckRepository.Insert(deckRepository.FindStaticById(param.NewDeck.Deck_Id));

                deckRepository.Save();
                return(1);
            }
        }