public async Task <ResponseViewModel <ContaDeposito> > GetContaDepositoPorPessoa(int IdPessoa)
        {
            try
            {
                ContaDeposito entidade =
                    db.ContaDepositos.Include("Estacionamento").Where(x => x.Estacionamento.IdPessoa.Equals(IdPessoa)).FirstOrDefault();

                return(new ResponseViewModel <ContaDeposito>()
                {
                    Data = entidade,
                    Serializado = true,
                    Sucesso = true,
                    Mensagem = "Busca realizada com sucesso"
                });
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <ContaDeposito>()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }
        public ActionResult MeusDados()
        {
            Estacionamento      retorno       = new Estacionamento();
            Usuario             usuario       = new Usuario();
            List <Solicitantes> solicitacoes  = new List <Solicitantes>();
            List <Solicitantes> solicitacoes2 = new List <Solicitantes>();
            ContaDeposito       contaDeposito = new ContaDeposito();
            var task = Task.Run(async() => {
                using (BaseController <Estacionamento> bUsuario = new BaseController <Estacionamento>())
                {
                    var valorRetorno = await bUsuario.GetObjectAsyncWithToken("Estacionamentos/EstacionamentoPorPessoa?IdPessoa=" + GetIdPessoa(), await GetToken());
                    retorno          = valorRetorno.Data;
                }

                using (BaseController <Usuario> bUsuario = new BaseController <Usuario>())
                {
                    var valorRetorno = await bUsuario.GetObjectAsyncWithToken("Usuarios/Detalhes/" + GetIdUsuario(), await GetToken());
                    usuario          = valorRetorno.Data;
                }

                using (BaseController <List <Solicitantes> > bUsuario = new BaseController <List <Solicitantes> >())
                {
                    var valorRetorno = await bUsuario.GetObjectAsyncWithToken("Solicitacao/GetSolicitacoesEmAberto?idUsuario=" + GetIdPessoa(), await GetToken());
                    solicitacoes     = valorRetorno.Data;
                }

                using (BaseController <List <Solicitantes> > bUsuario = new BaseController <List <Solicitantes> >())
                {
                    var valorRetorno = await bUsuario.GetObjectAsyncWithToken("Solicitacao/GetSolicitacoesParaFinalizar?idUsuario=" + GetIdPessoa(), await GetToken());
                    solicitacoes2    = valorRetorno.Data;
                }

                using (BaseController <ContaDeposito> bUsuario = new BaseController <ContaDeposito>())
                {
                    var valorRetorno = await bUsuario.GetObjectAsyncWithToken("Estacionamentos/GetContaDepositoPorPessoa?IdPessoa=" + GetIdPessoa(), await GetToken());
                    contaDeposito    = valorRetorno.Data;
                }
            });

            task.Wait();

            if (null == retorno.EnderecoEstacionamento)
            {
                retorno.EnderecoEstacionamento = new Endereco();
            }

            DadosEstacionamento dadosEstacionamento = new DadosEstacionamento {
                CNPJ               = retorno.CNPJ,
                CPF                = retorno.Proprietario.CPF,
                Email              = GetEmail(),
                InscricaoEstadual  = retorno.InscricaoEstadual,
                Nascimento         = retorno.Proprietario.Nascimento,
                Nickname           = usuario.Nome,
                NomeEstacionamento = retorno.NomeEstacionamento,
                NomeProprietario   = retorno.Proprietario.Nome,
                RG        = retorno.Proprietario.RG,
                ValorHora = retorno.ValorHora,

                Agencia     = contaDeposito.Agencia,
                Conta       = contaDeposito.Conta,
                IdBanco     = contaDeposito.IdBanco,
                IdTipoConta = contaDeposito.IdTipoConta,

                CEPEstacionamento         = retorno.EnderecoEstacionamento.CEP,
                RuaEstacionamento         = retorno.EnderecoEstacionamento.Rua,
                NumeroEstacionamento      = retorno.EnderecoEstacionamento.Numero,
                BairroEstacionamento      = retorno.EnderecoEstacionamento.Bairro,
                ComplementoEstacionamento = retorno.EnderecoEstacionamento.Complemento,
                IdCidadeEstacionamento    = retorno.EnderecoEstacionamento.IdCidade,
                IdEstadoEstacionamento    = retorno.EnderecoEstacionamento.IdEstado,

                CEP         = retorno.Proprietario.EnderecoPessoa.CEP,
                Bairro      = retorno.Proprietario.EnderecoPessoa.Bairro,
                Complemento = retorno.Proprietario.EnderecoPessoa.Complemento,
                IdCidade    = retorno.Proprietario.EnderecoPessoa.IdCidade,
                IdEstado    = retorno.Proprietario.EnderecoPessoa.IdEstado,
                Numero      = retorno.Proprietario.EnderecoPessoa.Numero,
                Rua         = retorno.Proprietario.EnderecoPessoa.Rua
            };

            ViewBag.InsereAlerta  = !retorno.TemEstacionamento;
            ViewBag.InsereAlerta2 = solicitacoes.Count > 0 && solicitacoes.First().NomeCliente != null ? true : false;
            ViewBag.InsereAlerta3 = solicitacoes2.Count > 0 && solicitacoes2.First().NomeCliente != null ? true : false;
            ViewBag.Nickname      = retorno.Proprietario.Nome;
            ViewBag.Cidade        = Helpers.GetSelectList("Cidades") as SelectList;
            ViewBag.Estado        = Helpers.GetSelectList("Estados") as SelectList;
            ViewBag.Banco         = Helpers.GetSelectList("Banco", null) as SelectList;
            ViewBag.TipoConta     = Helpers.GetSelectList("TipoConta", null) as SelectList;
            ViewBag.Level         = GetLevel();
            ViewBag.Cadastrar     = "You need to register an address for your parking. click here.";
            ViewData["foto"]      = usuario.Foto;
            return(View(dadosEstacionamento));
        }
        public async Task <ResponseViewModel <Usuario> > EditarFornecedor(DadosEstacionamento editarFornecedor)
        {
            try
            {
                DadosGeraisEstacionamento dados = new DadosGeraisEstacionamento();

                Task.Run(async() =>
                {
                    DadosGeraisEstacionamento retorno = db.Usuarios.Join(db.Estacionamentos,
                                                                         a => a.IdPessoa,
                                                                         b => b.IdPessoa,
                                                                         (a, b) => new { a, b }).
                                                        Join(db.Pessoas,
                                                             a2 => a2.a.IdPessoa,
                                                             c => c.Id,
                                                             (a2, c) => new { a2, c }).
                                                        Join(db.Enderecos,
                                                             a3 => a3.c.IdEndereco,
                                                             eP => eP.Id,
                                                             (a3, eP) => new { a3, eP }).
                                                        Join(db.ContaDepositos,
                                                             a4 => a4.a3.a2.b.Id,
                                                             cD => cD.IdEstacionamento,
                                                             (a4, cD) => new { a4, cD }).
                                                        Select((x) => new DadosGeraisEstacionamento
                    {
                        usuario         = x.a4.a3.a2.a,
                        enderecoUsuario = x.a4.eP,
                        estacionamento  = x.a4.a3.a2.b,
                        pessoa          = x.a4.a3.c,
                        contaDeposito   = x.cD
                    }).FirstOrDefault(x => x.usuario.Login.Equals(editarFornecedor.Email));

                    dados = retorno;
                }).Wait();

                if (dados == null)
                {
                    throw new Exception("Data not found. please if you're a user, contact me. it's a bug or yout trying to hack me.");
                }

                UsuariosController        usuariosController        = new UsuariosController();
                EstacionamentosController estacionamentosController = new EstacionamentosController();
                Usuario usuario = dados.usuario;
                usuario.Nome = editarFornecedor.Nickname;

                Estacionamento estacionamento = dados.estacionamento;
                estacionamento.InscricaoEstadual = editarFornecedor.InscricaoEstadual;
                estacionamento.ValorHora         = editarFornecedor.ValorHora;

                Endereco endereco = dados.enderecoUsuario;
                endereco.Bairro      = editarFornecedor.Bairro;
                endereco.CEP         = editarFornecedor.CEP;
                endereco.IdCidade    = editarFornecedor.IdCidade;
                endereco.IdEstado    = editarFornecedor.IdEstado;
                endereco.Rua         = editarFornecedor.Rua;
                endereco.Numero      = editarFornecedor.Numero;
                endereco.Complemento = editarFornecedor.Complemento;

                ContaDeposito contaDeposito = dados.contaDeposito;
                contaDeposito.Agencia     = editarFornecedor.Agencia;
                contaDeposito.IdBanco     = editarFornecedor.IdBanco;
                contaDeposito.IdTipoConta = editarFornecedor.IdTipoConta;
                contaDeposito.Agencia     = editarFornecedor.Agencia;
                contaDeposito.Conta       = editarFornecedor.Conta;

                Task.Run(async() =>
                {
                    db.Entry(dados.usuario).State         = EntityState.Detached;
                    db.Entry(dados.enderecoUsuario).State = EntityState.Detached;
                    db.Entry(dados.estacionamento).State  = EntityState.Detached;
                    db.Entry(dados.contaDeposito).State   = EntityState.Detached;

                    db.Entry(usuario).State        = EntityState.Modified;
                    db.Entry(estacionamento).State = EntityState.Modified;
                    db.Entry(endereco).State       = EntityState.Modified;
                    db.Entry(contaDeposito).State  = EntityState.Modified;

                    await db.SaveChangesAsync();
                }).Wait();


                ResponseViewModel <Usuario> responseUser = new ResponseViewModel <Usuario>
                {
                    Mensagem    = "Sucessfull registered!",
                    Serializado = true,
                    Sucesso     = true,
                    Data        = usuario
                };
                return(responseUser);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <Usuario>()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Sorry, something went wrong: " + e.Message
                });
            }
        }
        public async Task <ResponseViewModel <Usuario> > CadastrarFornecedor(CadastroFornecedor cadastroFornecedor)
        {
            try
            {
                Usuario existente  = new Usuario();
                Pessoa  existente1 = new Pessoa();

                Task.Run(async() => {
                    var valor = db.Usuarios.Where(x => x.Login == cadastroFornecedor.Email).FirstOrDefault();
                    existente = valor;

                    var valor2 = db.Pessoas.Where(x => x.CPF == cadastroFornecedor.CPF).FirstOrDefault();
                    existente1 = valor2;
                }).Wait();

                if (existente != null)
                {
                    throw new Exception("Email already in use");
                }

                if (existente1 != null)
                {
                    throw new Exception("Individual Registration already in use");
                }

                UsuariosController        usuariosController        = new UsuariosController();
                EstacionamentosController estacionamentosController = new EstacionamentosController();

                string auxSenha = Helpers.GenerateRandomString();

                Usuario usuario = new Usuario
                {
                    Login    = cadastroFornecedor.Email,
                    AuxSenha = auxSenha,
                    Senha    = Helpers.CriarSenha(cadastroFornecedor.Senha, auxSenha),
                    Level    = 1,
                    Nome     = cadastroFornecedor.Nickname ?? "",
                    Foto     = cadastroFornecedor.Foto,
                    Pessoa   = new Pessoa
                    {
                        Nome           = cadastroFornecedor.NomeProprietario,
                        Nascimento     = cadastroFornecedor.Nascimento,
                        CPF            = cadastroFornecedor.CPF ?? "",
                        RG             = cadastroFornecedor.RG ?? "",
                        DataCriacao    = DateTime.Now,
                        EnderecoPessoa = new Endereco
                        {
                            Rua         = cadastroFornecedor.Rua ?? "",
                            Numero      = cadastroFornecedor.Numero,
                            Bairro      = cadastroFornecedor.Bairro ?? "",
                            CEP         = cadastroFornecedor.CEP ?? "",
                            Complemento = cadastroFornecedor.Complemento ?? "",
                            IdCidade    = cadastroFornecedor.IdCidade,
                            IdEstado    = cadastroFornecedor.IdEstado
                        }
                    }
                };

                db.Usuarios.Add(usuario);

                Task.Run(async() => {
                    await db.SaveChangesAsync();
                }).Wait();


                Estacionamento estacionamento = new Estacionamento
                {
                    NomeEstacionamento = cadastroFornecedor.NomeEstacionamento ?? "",
                    CNPJ = cadastroFornecedor.CNPJ ?? "",
                    InscricaoEstadual         = cadastroFornecedor.InscricaoEstadual ?? "",
                    IdEnderecoEstabelecimento = null,
                    Deletado  = false,
                    IdPessoa  = usuario.IdPessoa,
                    ValorHora = cadastroFornecedor.Value
                };

                db.Estacionamentos.Add(estacionamento);

                Task.Run(async() => {
                    await db.SaveChangesAsync();
                }).Wait();

                ContaDeposito contaDeposito = new ContaDeposito
                {
                    Agencia          = cadastroFornecedor.Agencia,
                    IdBanco          = cadastroFornecedor.IdBanco,
                    IdTipoConta      = cadastroFornecedor.IdTipoConta,
                    Conta            = cadastroFornecedor.Conta,
                    IdEstacionamento = estacionamento.Id
                };

                db.ContaDepositos.Add(contaDeposito);

                Task.Run(async() => {
                    await db.SaveChangesAsync();
                }).Wait();

                ResponseViewModel <Usuario> responseUser = new ResponseViewModel <Usuario>
                {
                    Mensagem    = "Registration Successful!",
                    Serializado = true,
                    Sucesso     = true,
                    Data        = usuario
                };
                return(responseUser);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <Usuario>()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "We were unable to fulfill your request: " + e.Message
                });
            }
        }
Exemple #5
0
        public async Task <ResponseViewModel <List <TotalEstacionamentosMensais> > > GetValoresMensais(int mes, int ano)
        {
            try
            {
                if (mes > 0 && ano > 0)
                {
                    List <TotalEstacionamentosMensais> totalEstacionamentos = new List <TotalEstacionamentosMensais>();
                    DateTime primeiroDiaDoMes            = new DateTime(ano, mes, 1);
                    DateTime ultimoDiaDoMes              = new DateTime(ano, mes, DateTime.DaysInMonth(ano, mes));
                    List <RecebimentoTotalizador> totais = db.Solicitacoes.Include("Estacionamento").
                                                           Where(x => x.Status.Equals(1) && x.DataSaida >= primeiroDiaDoMes && x.DataSaida <= ultimoDiaDoMes)
                                                           .GroupBy(l => l.IdEstacionamento)
                                                           .Select(cl => new RecebimentoTotalizador
                    {
                        IdEstacionamento = cl.Key,
                        ValorAPagar      = cl.Sum(c => c.ValorTotalEstacionamento)
                    }).ToList();

                    foreach (var item in totais)
                    {
                        ContaDeposito conta = db.ContaDepositos.Include("Banco").Include("TipoConta").FirstOrDefault(x => x.IdEstacionamento == item.IdEstacionamento);
                        TotalEstacionamentosMensais total = new TotalEstacionamentosMensais();
                        total.IdEstacionamento   = item.IdEstacionamento;
                        total.ValorAPagar        = item.ValorAPagar;
                        total.NomeEstacionamento = (db.Estacionamentos.Find(item.IdEstacionamento)).NomeEstacionamento;
                        total.TipoConta          = conta != null ? conta.TipoConta.Nome : "";
                        total.ContaParaPagar     = conta != null ? conta.Conta : "";
                        total.AgenciaParaPagar   = conta != null ? conta.Agencia: "";
                        total.Banco = conta != null ? conta.Banco.Nome : "";
                        totalEstacionamentos.Add(total);
                    }

                    return(new ResponseViewModel <List <TotalEstacionamentosMensais> >
                    {
                        Data = totalEstacionamentos,
                        Mensagem = "Dados retornados com sucesso!",
                        Serializado = true,
                        Sucesso = true
                    });
                }
                else
                {
                    return(new ResponseViewModel <List <TotalEstacionamentosMensais> >
                    {
                        Data = null,
                        Mensagem = "Ano e Mês devem ser preenchidos e maiores que 0!",
                        Serializado = true,
                        Sucesso = false
                    });
                }
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <List <TotalEstacionamentosMensais> >
                {
                    Data = null,
                    Mensagem = "Ocorreu um erro ao processar sua solicitação!" + e.Message,
                    Serializado = true,
                    Sucesso = false
                });
            }
        }