Example #1
0
        public HttpResponseMessage InserirCartaoCredito(HttpRequestMessage request, CartaoCreditoViewModel cartaoCreditoViewModel)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = null;
                var cartao = new CartaoCredito();

                if (!ModelState.IsValid)
                {
                    response = request.CreateResponse(HttpStatusCode.BadRequest,
                                                      ModelState.Keys.SelectMany(k => ModelState[k].Errors)
                                                      .Select(m => m.ErrorMessage).ToArray());
                }
                else
                {
                    var usuario = _usuarioRep.GetSingle(int.Parse(HttpContext.Current.User.Identity.GetUserId()));
                    var membro = this._membroRep.GetAll().FirstOrDefault(x => x.PessoaId.Equals(usuario.PessoaId));


                    if (cartaoCreditoViewModel.Padrao)
                    {
                        var _param = new[]
                        {
                            new SqlParameter {
                                ParameterName = "@PADRAO", SqlDbType = System.Data.SqlDbType.Bit, Value = 0
                            },
                            new SqlParameter {
                                ParameterName = "@PADRAO1", SqlDbType = System.Data.SqlDbType.Bit, Value = 1
                            }
                        };

                        var sql = "UPDATE CartaoCredito set Padrao = @PADRAO WHERE Padrao = @PADRAO1";
                        _cartaoCreditoRep.ExecuteWithStoreProcedure(sql, _param);
                        _unitOfWork.Commit();
                    }

                    if (cartaoCreditoViewModel.Id != null && cartaoCreditoViewModel.Id > 0)
                    {
                        cartao = _cartaoCreditoRep.FirstOrDefault(x => x.Id == cartaoCreditoViewModel.Id);


                        cartao.Nome = cartaoCreditoViewModel.Nome;
                        cartao.Numero = cartaoCreditoViewModel.Numero;
                        cartao.DataVencimento = Convert.ToDateTime(cartaoCreditoViewModel.DataVencimento);
                        cartao.Cvc = $"{usuario.Chave}|{_encryptionService.EncryptCvv(cartaoCreditoViewModel.Cvc)}";
                        cartao.TokenCartaoGerenciaNet = string.Empty;
                        cartao.CartaoBandeiraId = cartaoCreditoViewModel.CartaoBandeiraId;
                        cartao.Padrao = cartaoCreditoViewModel.Padrao;
                        cartao.MembroId = membro.Id;
                        cartao.Ativo = true;
                        cartao.UsuarioAlteracaoId = usuario.Id;
                        cartao.UsuarioAlteracao = usuario;
                        cartao.DtAlteracao = DateTime.Now;


                        _cartaoCreditoRep.Edit(cartao);
                        _unitOfWork.Commit();
                    }
                    else
                    {
                        cartao = new CartaoCredito
                        {
                            Nome = cartaoCreditoViewModel.Nome,
                            Numero = cartaoCreditoViewModel.Numero,
                            DataVencimento = Convert.ToDateTime(cartaoCreditoViewModel.DataVencimento),
                            CartaoBandeiraId = cartaoCreditoViewModel.CartaoBandeiraId,
                            Cvc = $"{usuario.Chave}|{_encryptionService.EncryptCvv(cartaoCreditoViewModel.Cvc)}",
                            TokenCartaoGerenciaNet = string.Empty,
                            Padrao = true,
                            MembroId = membro.Id,
                            Ativo = true,
                            UsuarioCriacaoId = usuario.Id,
                            UsuarioCriacao = usuario,
                            DtCriacao = DateTime.Now,
                        };

                        _cartaoCreditoRep.Add(cartao);
                        _unitOfWork.Commit();

                        cartaoCreditoViewModel.Id = cartao.Id;
                    }

                    response = request.CreateResponse(HttpStatusCode.Created, cartaoCreditoViewModel);
                }

                return response;
            }));
        }