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); }
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) }); }
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()); }
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()); }
public async Task <User> GetCurrentUser() => await userService.GetUserWithCharacters(httpContextReader.CurrentUserId);