public HttpResponseMessage RetornoMensalidade(HttpRequestMessage request, TokenNotificationGerenciaNet retorno)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = null;
                var status = new int();

                var data = _pagamentoService.ReturnStatusFatura(retorno.Notification);

                switch (data.Status.StatusAtual)
                {
                case "new":
                    status = (int)StatusMensalidade.Gerado;     // Assinatura criada, porém nenhuma cobrança foi paga. O termo "new" equivale a "nova".
                    break;

                case "active":
                    status = (int)StatusMensalidade.Recebido;     // Assinatura ativa. Todas as cobranças estão sendo geradas. O termo "active" equivale a "ativa".
                    break;

                case "paid":
                    status = (int)StatusMensalidade.Recebido;
                    break;

                case "waiting":
                    status = (int)StatusMensalidade.AguardandoPagamento;
                    break;

                case "canceled":
                    status = (int)StatusMensalidade.Cancelado;     // Assinatura foi cancelada pelo vendedor ou pelo pagador. O termo "canceled" equivale a "cancelada".
                    break;

                case "expired":
                    status = (int)StatusMensalidade.AssinaturaExpirada;     // Assinatura expirada. Todas as cobranças configuradas para a assinatura já foram emitidas.
                                                                            // O termo "expired" equivale a "expirada".
                    break;

                case "unpaid":
                    status = (int)StatusMensalidade.NaoPago;
                    break;

                case "settled":
                    status = (int)StatusMensalidade.Recebido;
                    break;

                case "refunded":
                    status = (int)StatusMensalidade.Devolvido;
                    break;

                case "contested":
                    status = (int)StatusMensalidade.Contestado;
                    break;
                }

                var mensalidade = _mensalidadeRep.GetSingle(data.CustomId);

                if (status == (int)StatusMensalidade.Recebido)
                {
                    mensalidade.DtRecebimento = DateTime.Now;
                    mensalidade.Status = (StatusMensalidade)status;
                    mensalidade.Token = retorno.Notification;
                }
                else if (mensalidade.Status != StatusMensalidade.Recebido)
                {
                    mensalidade.Status = (StatusMensalidade)status;
                    mensalidade.Token = retorno.Notification;
                }

                _mensalidadeRep.Edit(mensalidade);
                _unitOfWork.Commit();

                response = request.CreateResponse(HttpStatusCode.OK, new { });
                return response;
            }));
        }
        public HttpResponseMessage RetornoFatura(HttpRequestMessage request, TokenNotificationGerenciaNet retorno)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = null;
                var status = new int();

                var data = _pagamentoService.ReturnStatusFatura(retorno.Notification);

                switch (data.Status.StatusAtual)
                {
                case "waiting":
                    status = (int)StatusFatura.AguardandoPagamento;
                    break;

                case "unpaid":
                    status = (int)StatusFatura.NaoPago;
                    break;


                case "paid":
                    status = (int)StatusFatura.Recebido;
                    break;

                case "settled":
                    status = (int)StatusFatura.Recebido;
                    break;

                case "refunded":
                    status = (int)StatusFatura.Devolvido;
                    break;

                case "contested":
                    status = (int)StatusFatura.Contestado;
                    break;

                case "canceled":
                    status = (int)StatusFatura.Cancelado;
                    break;
                }

                var fatura = _faturaRep.GetSingle(data.CustomId);

                if (status > 0)
                {
                    if (status != (int)StatusFatura.Cancelado && status != (int)StatusFatura.Recebido)
                    {
                        fatura.Status = (StatusFatura)status;
                        fatura.Token = retorno.Notification;
                        _faturaRep.Edit(fatura);
                        _unitOfWork.Commit();
                    }
                    else if (status == (int)StatusFatura.Recebido)
                    {
                        fatura.Status = (StatusFatura)status;
                        fatura.Token = retorno.Notification;
                        fatura.DtRecebimento = DateTime.Now;
                        _faturaRep.Edit(fatura);
                        _unitOfWork.Commit();
                    }
                }
                //var faturaVM = Mapper.Map<Fatura, FaturaViewModel>(fatura);

                response = request.CreateResponse(HttpStatusCode.OK, new { });
                return response;
            }));
        }