示例#1
0
        public void SetUp()
        {
            filesManager          = new Mock <IFilesManager>();
            database              = new Mock <IDatabase>();
            tempDatabaseCleaner   = new Mock <ITempDatabaseCleaner>();
            customInteriorManager = new Mock <ICustomInteriorManager>();
            httpContextReader     = new Mock <IHttpContextReader>();

            filesManager.Setup(f => f.Upload(It.IsNotNull <IFormFile>(), It.IsNotNull <string>()))
            .ReturnsAsync(uploadedFile);
            database.Setup(d => d.PremiumFileRepository.Insert(It.IsNotNull <PremiumFile>(), false)).ReturnsAsync(true);
            database.Setup(d => d.PremiumFileRepository.GetFileWithOrder(OldFileId)).ReturnsAsync(() =>
            {
                var premiumFile = new PremiumFile();
                premiumFile.SetOrder(new Order());
                return(premiumFile);
            });
            database.Setup(d => d.PremiumFileRepository.GetFileWithOrderAndEstate(OldFileId)).ReturnsAsync(() =>
            {
                var premiumFile = new PremiumFile();
                premiumFile.SetOrder(new Order());
                premiumFile.SetEstate(new Estate());
                return(premiumFile);
            });
            database.Setup(d => d.BeginTransaction()).Returns(new DatabaseTransaction());
            database.Setup(d => d.PremiumFileRepository.Delete(It.IsNotNull <PremiumFile>())).ReturnsAsync(true);
            database.Setup(d => d.OrderRepository.Update(It.IsNotNull <Order>())).ReturnsAsync(true);
            customInteriorManager.Setup(c =>
                                        c.InitGameTempObjectsAndInteriors(It.IsNotNull <Estate>(), It.IsNotNull <PremiumFile>()))
            .Returns((new List <GameTempObject>(), new GameTempInterior()));
            httpContextReader.Setup(h => h.CurrentUserId).Returns(UserId);

            premiumUserLibraryManager = new PremiumUserLibraryManager(filesManager.Object, database.Object,
                                                                      tempDatabaseCleaner.Object, customInteriorManager.Object, httpContextReader.Object);
        }
示例#2
0
        private void ValidateOldFileExpiration(PremiumFile oldPremiumFile)
        {
            if (oldPremiumFile.DateCreated.AddDays(1) < DateTime.Now)
            {
                throw new NoPermissionsException("Time to change file has expired");
            }

            oldPremiumFile.Order.SetApprovalState(StateType.None);
        }
示例#3
0
        private async Task DeleteOldPremiumFileAndUpdateOrder(PremiumFile oldPremiumFile)
        {
            if (!await database.PremiumFileRepository.Delete(oldPremiumFile))
            {
                throw new DatabaseException("Deleting old file failed");
            }

            if (!await database.OrderRepository.Update(oldPremiumFile.Order))
            {
                throw new DatabaseException();
            }
        }
        public async Task ExecuteAddCustomInterior(PremiumFile premiumFile,
                                                   IEnumerable <GameTempObject> gameTempObjects, GameTempInterior gameTempInterior)
        {
            if (!await database.GameTempObjectRepository.InsertRange(gameTempObjects))
            {
                filesManager.Delete(premiumFile.Path);
                throw new DatabaseException();
            }

            if (!await database.GameTempInteriorRepository.Insert(gameTempInterior, false))
            {
                filesManager.Delete(premiumFile.Path);
                throw new DatabaseException();
            }
        }
        public (IEnumerable <GameTempObject>, GameTempInterior) InitGameTempObjectsAndInteriors(Estate estate,
                                                                                                PremiumFile premiumFile)
        {
            var(gameTempObjectsElements, gameTempInteriorsElements) = (
                xmlReader.GetDescendantNodes($"{filesManager.WebRootPath}{premiumFile.Path}",
                                             (node) => node.Name.LocalName.Equals("object")),
                xmlReader.GetDescendantNodes($"{filesManager.WebRootPath}{premiumFile.Path}",
                                             (node) => node.Name.LocalName.Equals("marker")));

            int gameTempObjectsCount = gameTempObjectsElements.Count();

            if (gameTempObjectsCount > Constants.MaximumTempObjectsCount)
            {
                filesManager.Delete(premiumFile.Path);

                throw new ServerException(
                          $"Maximum game temp objects count is: {Constants.MaximumTempObjectsCount}. Your interior file has: {gameTempObjectsCount}");
            }

            return(
                TempObjectsAndInteriorsUtils.ConvertXElementsToTempObjects(gameTempObjectsElements, estate.Id,
                                                                           estate.InteriorId,
                                                                           httpContextReader.CurrentUsername),
                TempObjectsAndInteriorsUtils.ConvertXElementsToTempInterior(gameTempInteriorsElements, estate.Id,
                                                                            estate.InteriorId, httpContextReader.CurrentUserId));
        }