コード例 #1
0
        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; }
        }
コード例 #2
0
        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);
        }
コード例 #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);
            }
        }