public async Task ProcessDisarmedTrap(string userId, string disarmedTrapId) { UserResult user = await AppBusiness.User.GetById(userId); ArmedTrapResult disarmedTrap = await AppRepository.Trap.GetArmedTrapById(disarmedTrapId); UserResult userInjured = user; UserResult userOwnerTrap = await AppBusiness.User.GetById(disarmedTrap.UserId); if (userOwnerTrap != null) { TrapResult trap = await AppBusiness.Trap.GetByNameKey(disarmedTrap.NameKey); UserRequest userOwnerRequest = Mapper.Map <UserRequest>(userOwnerTrap); UserRequest userInjuredRequest = Mapper.Map <UserRequest>(userInjured); await AppBusiness.User.AddPoints(userOwnerRequest, trap.Points); /* Deixar de forma dinamica futuramente */ var trapOwned = await AppBusiness.Trap.GetByNameKey("BEAR_TRAP"); var trapUserOwned = new UserTrapRequest(); trapUserOwned.TrapId = trapOwned.Id.ToString(); trapUserOwned.Amount = 5; AppBusiness.User.AddTrap(userOwnerRequest, trapUserOwned); await AppBusiness.User.Save(userOwnerRequest); await SendNotificationToUserInjured(userInjuredRequest, userOwnerRequest, disarmedTrap); await SendNotificationToUserOwnerTrap(userInjuredRequest, userOwnerRequest, disarmedTrap, trap.Points); } }
private async Task AddInitialTraps(UserRequest user) { UserTrapRequest userTrap = new UserTrapRequest(); userTrap.TrapId = await AppBusiness.Parameter.GetValue(EParameter.ID_TRAP_NEW_REGISTER); userTrap.Amount = Convert.ToInt32(await AppBusiness.Parameter.GetValue(EParameter.AMOUNT_TRAP_NEW_REGISTER)); AddTrap(user, userTrap); }
private UserTrap Parse(UserTrapRequest userTrap) { if (userTrap != null) { UserTrap response = new UserTrap(); response.Trap = AppRepository.EntitiesContext.Traps.Find(new Guid(userTrap.TrapId)); response.Amount = userTrap.Amount; return(response); } else { return(null); } }
public async Task <UserResult> ConfirmBuyIntent(BuyIntentRequest request) { UserResult response = null; BuyIntentResult actualIntent = await AppRepository.Purchase.GetById(request.Id); if (actualIntent != null) { request = Mapper.Map <BuyIntentRequest>(actualIntent); await AppRepository.Purchase.ConfirmBuyIntent(request); response = await AppBusiness.User.GetById(actualIntent.UserId); if (response != null) { AvailableTrapResult availableTrap = await AppBusiness.Purchase.GetAvailableTrapById(actualIntent.AvailableTrapId); if (availableTrap != null) { TrapResult trap = await AppBusiness.Trap.GetByNameKey(availableTrap.NameKey); UserTrapRequest userTrap = new UserTrapRequest(); userTrap.TrapId = trap.Id.ToString(); userTrap.Amount = availableTrap.Amount; UserRequest userRequest = Mapper.Map <UserRequest>(response); AppBusiness.User.AddTrap(userRequest, userTrap); await AppRepository.User.UpdateTraps(userRequest.Id, userRequest.Traps); response = await AppBusiness.User.GetById(userRequest.Id); } } } return(response); }
public void AddTrap(UserRequest user, UserTrapRequest userTrap) { bool hasTrap = false; if (user.Traps == null) { user.Traps = new List <UserTrapRequest>(); } foreach (UserTrapRequest trapUserActual in user.Traps) { if (trapUserActual.TrapId == userTrap.TrapId) { trapUserActual.Amount += userTrap.Amount; hasTrap = true; } } if (!hasTrap) { user.Traps.Add(userTrap); } }