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); }
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)); } }
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); } }