public async Task InsertAsync(IEnumerable <Card> obj) { try { var list = new List <Card>(); var exceptionList = new List <Card>(); foreach (Card card in obj) { if (card.IsValid()) { if (await _context.Files.FindAsync(card.Answer) == null) { var ansFileId = card.Answer; var ansFileMd5Hash = authUtils.GetMd5HashString(ansFileId.ToString()); var ansFilePath = authUtils.GetFilePathFromMD5(ansFileMd5Hash); _context.Files.Add(new File() { File_Id = ansFileId, Md5 = ansFileMd5Hash, Path = ansFilePath, Type = "" }); } if (await _context.Files.FindAsync(card.Question) == null) { var queFileId = card.Question; var queFileMd5Hash = authUtils.GetMd5HashString(queFileId.ToString()); var queFilePath = authUtils.GetFilePathFromMD5(queFileMd5Hash); _context.Files.Add(new File() { File_Id = queFileId, Md5 = queFileMd5Hash, Path = queFilePath, Type = "" }); } list.Add(card); _context.Cards.Add(card); } else { exceptionList.Add(card); } } if (exceptionList.Count > 0) { throw new NonValidatedModelException <Card>(exceptionList); } } catch { throw; } }
public virtual async Task <string> Save(IFormFile file) { var currentDirectory = Directory.GetCurrentDirectory(); var dataPath = Path.GetDirectoryName(currentDirectory); String md5Path = authOptions.GetMd5HashString(file.FileName.Split(".")[0]); String path = authOptions.GetFilePathFromMD5(md5Path); Directory.CreateDirectory(dataPath + @"/UsersData/" + path.ToString()); using (var stream = File.Create(dataPath + @"/UsersData/" + path.ToString() + file.FileName)) { await file.CopyToAsync(stream); } return(path); }
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); } }