コード例 #1
0
        public async Task <bool> AddCustomInterior(IFormFile interiorFile, int estateId)
        {
            if (interiorFile == null)
            {
                throw new ServerException("Interior file does not exists");
            }

            var user = await userService.GetUserWithCharacters(httpContextReader.CurrentUserId) ??
                       throw new EntityNotFoundException("User not found");

            var estate = await characterService.HasAnyCharacterEstate(user.Characters, estateId) ??
                         throw new NoPermissionsException("You are not owner of this estate");

            using (var transaction = database.BeginTransaction().Transaction)
            {
                await tempDatabaseCleaner.ClearGameTempObjectsAndInteriors();

                var order = new OrderBuilder()
                            .SetOperation(PremiumOperation.Interior)
                            .SetCost(PremiumConstants.AddCustomInteriorCost)
                            .SetUser(httpContextReader.CurrentUserId)
                            .SetEstate(estateId)
                            .Build();

                if (await orderService.CreateOrder(order) == null)
                {
                    throw new DatabaseException("Inserting order failed");
                }

                var premiumFile =
                    await premiumUserLibraryManager.AddFileToLibrary(interiorFile, PremiumFileType.Interior,
                                                                     order.Id) ??
                    throw new DatabaseException("Adding interior file to library failed");

                await filesManager.ReplaceInFile(premiumFile.Path, "edf:", string.Empty);

                var(gameTempObjects, gameTempInterior) =
                    customInteriorManager.InitGameTempObjectsAndInteriors(estate, premiumFile);

                await customInteriorManager.ExecuteAddCustomInterior(premiumFile, gameTempObjects, gameTempInterior);

                if (await purchaseService.CreatePurchase(PremiumConstants.AddCustomInterior,
                                                         httpContextReader.CurrentUserId, PremiumConstants.AddCustomInteriorCost) == null)
                {
                    throw new PremiumOperationException(
                              "Adding custom skin failed");
                }

                transaction.Complete();
            }

            return(true);
        }
コード例 #2
0
        public async Task <GetUserWithCharactersResponse> Handle(GetUserWithCharactersRequest request,
                                                                 CancellationToken cancellationToken)
        {
            var user = await userService.GetUserWithCharacters(request.UserId)
                       ?? throw new EntityNotFoundException("User not found");

            return(new GetUserWithCharactersResponse {
                User = mapper.Map <UserWithCharactersDto>(user)
            });
        }
コード例 #3
0
        public async Task <RestoreDefaultInteriorResponse> Handle(RestoreDefaultInteriorRequest request,
                                                                  CancellationToken cancellationToken)
        {
            var user = await userService.GetUserWithCharacters(httpContextReader.CurrentUserId) ??
                       throw new EntityNotFoundException("User not found");

            if (await characterService.HasAnyCharacterEstate(user.Characters, request.EstateId) == null)
            {
                throw new NoPermissionsException("You are not owner of this estate");
            }

            //TODO: Call LUA script
            return(new RestoreDefaultInteriorResponse());
        }
コード例 #4
0
        public async Task <RestoreDefaultSkinResponse> Handle(RestoreDefaultSkinRequest request,
                                                              CancellationToken cancellationToken)
        {
            var user = await userService.GetUserWithCharacters(httpContextReader.CurrentUserId) ??
                       throw new EntityNotFoundException("User not found");

            if (!user.Characters.Any(c => c.Id == request.CharacterId))
            {
                throw new NoPermissionsException("You are not owner of this character");
            }

            //TODO: Call LUA script

            return(new RestoreDefaultSkinResponse());
        }
コード例 #5
0
 public async Task <User> GetCurrentUser()
 => await userService.GetUserWithCharacters(httpContextReader.CurrentUserId);