public string SolicitaResgatePremio(int idPremio) { Usuario u = (Usuario)Session["UserProfile"]; UsuarioPremio usuarioPremio = new UsuarioPremio { UsuarioId = u.Id, PremioId = idPremio }; using (var client = new HttpClient()) { string url = "https://apipuccoins.azurewebsites.net/api/ResgataPremio"; client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(string.Format("{0}:{1}", u.Email, u.Senha)))); var uri = new Uri(url); var data = JsonConvert.SerializeObject(usuarioPremio); var content = new StringContent(data, Encoding.UTF8, "application/json"); var response = client.PostAsync(uri, content).Result; if (response.IsSuccessStatusCode) { return("Pedido de Resgate de Prêmio realizado com sucesso."); } else { return("Erro no resgate de Prêmio"); } } }
public IHttpActionResult ResgataPremio(UsuarioPremio usuarioPremio) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } usuarioPremio.DataSolicitacao = DateTime.Now; usuarioPremio.DataEntrega = DateTime.Now.AddDays(10); int idUser = Convert.ToInt32(Thread.CurrentPrincipal.Identity.Name); Premio premio = db.Premios.AsNoTracking().Where(a => a.Id == usuarioPremio.PremioId).FirstOrDefault(); Conta conta = db.Contas.AsNoTracking().Where(a => a.UsuarioId == idUser).FirstOrDefault(); if (conta.Saldo < premio.Preco) { return(BadRequest("Saldo Insuficiente")); } usuarioPremio.UsuarioId = idUser; db.UsuarioPremio.Add(usuarioPremio); db.SaveChanges(); DiminuiSaldo(conta, premio.Preco); DiminuiQuantidade(premio); return(Ok("Prêmio resgatado!")); }
public async Task <ResponseContract <ResgateViewModel> > MakeRedemptionAsync(ResgateViewModel request) { var response = new ResponseContract <ResgateViewModel>(); response.SetContent(request); try { var product = await _produtoCampanhaRepository.FindByAsync(request.ProdutoCampanhaId, request.CampanhaProdutoId, request.ProdutoId, _user.GetCampaignId(), _user.GetWallet()); if (product == null || product.CampanhaProduto == null) { response.AddError(Resources.ProductInvalid); return(response); } if (product.CampanhaProduto.Campanha == null || product.CampanhaProduto.Campanha.DesabilitaResgate.GetValueOrDefault()) { response.AddError(Resources.CampaignInvalid); return(response); } if (await _usuarioPremioRepository.HasPrizeAsync(_user.GetUserId())) { response.AddError(Resources.UserAlreadyRedemption); return(response); } _usuarioPremioRepository.BeginTransaction(); var usuarioPremio = new UsuarioPremio(_user.GetUserId(), request.CampanhaProdutoId, Enum.UsuarioPremioStatus.AGUARDANDO_PROCESSAMENTO.GetHashCode(), DateTime.Now); usuarioPremio = await _usuarioPremioRepository.InsertAsync(usuarioPremio); _usuarioPremioRepository.Commit(); response.SetValid(); _logger.LogWarning($"[UsuarioId: {_user.GetUserId()}] [CPF: {_user.GetUserDocument()}] realizou o resgate - [CampanhaProduto: {request.CampanhaProdutoId}] [Produto: {request.ProdutoId}] ."); await _authService.RefreshClaims(); } catch (Exception ex) { _logger.LogError(ex.Message, ex); _usuarioPremioRepository.Rollback(); response.AddError(Resources.ErrorOnMakeWish); } return(response); }