示例#1
0
        public async Task <ResponseViewModel <List <Solicitantes> > > StatusSolicitacao(int idCliente)
        {
            try
            {
                List <Solicitantes> solicitacao = new List <Solicitantes>();
                solicitacao = await db.Solicitacoes.Include("Cliente").Include("Estacionamento").Include("Estacionamento.Proprietario")
                              .Where(x => x.IdCliente.Equals(idCliente) && (x.Status == 0 || x.Status == 2 || x.Status == 3))
                              .Select(cl => new Solicitantes
                {
                    IdEstacionamento = cl.IdEstacionamento,
                    InsereAlerta     = !cl.Estacionamento.TemEstacionamento,
                    Nickname         = cl.Estacionamento.Proprietario.Nome,
                    NomeCliente      = cl.Cliente.Nome,
                    IdCliente        = cl.IdCliente,
                    IdSolicitacao    = cl.Id,
                    Status           = cl.Status,
                    PeriodoDe        = cl.DataEntrada,
                    PeriodoAte       = null
                }).ToListAsync();

                ResponseViewModel <List <Solicitantes> > response = new ResponseViewModel <List <Solicitantes> >
                {
                    Data        = solicitacao,
                    Mensagem    = "Dados retornados com sucesso!",
                    Serializado = true,
                    Sucesso     = true
                };

                return(response);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <List <Solicitantes> >()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }
示例#2
0
        //[ValidateAntiForgeryToken]
        public virtual async Task <ResponseViewModel <TEntidade> > Deletar(int id)
        {
            try
            {
                var entidade = await db.Set <TEntidade>().FindAsync(id);

                if (entidade == null)
                {
                    var response = new ResponseViewModel <TEntidade>
                    {
                        Data     = null,
                        Sucesso  = false,
                        Mensagem = "Entidade não encontrada."
                    };
                    return(response);
                }
                else
                {
                    db.Set <TEntidade>().Remove(entidade);
                    await db.SaveChangesAsync();

                    var response = new ResponseViewModel <TEntidade>
                    {
                        Data     = null,
                        Sucesso  = true,
                        Mensagem = "Entidade removida com sucesso."
                    };
                    return(response);
                }
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <TEntidade>()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }
        public async Task <ResponseViewModel <CompraCreditos> > CreditarConta(CompraCreditos compraCreditos)
        {
            try
            {
                Task.Run(async() => {
                    await Cadastrar(compraCreditos);
                }).Wait();

                Cliente cliente = db.Clientes.Find(compraCreditos.IdCliente);

                cliente.Saldo += compraCreditos.Credito;

                Task.Run(async() => {
                    db.Entry <Cliente>(cliente).State = EntityState.Modified;
                    await db.SaveChangesAsync();
                }).Wait();

                EnviarEmailCliente(cliente, compraCreditos.Credito);

                ResponseViewModel <CompraCreditos> response = new ResponseViewModel <CompraCreditos>
                {
                    Data        = compraCreditos,
                    Mensagem    = "Dados Cadastrados com sucesso!",
                    Serializado = true,
                    Sucesso     = true
                };

                return(response);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <CompraCreditos>()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }
示例#4
0
        public virtual async Task <ResponseViewModel <TEntidade> > Editar(TEntidade entidade)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.Entry <TEntidade>(entidade).State = EntityState.Modified;
                    await db.SaveChangesAsync();

                    var response = new ResponseViewModel <TEntidade>
                    {
                        Data     = entidade,
                        Sucesso  = true,
                        Mensagem = "Entidade alterada com sucesso."
                    };
                    return(response);
                }
                else
                {
                    var response = new ResponseViewModel <TEntidade>
                    {
                        Data     = entidade,
                        Sucesso  = false,
                        Mensagem = "Erro na validação da entidade."
                    };
                    return(response);
                }
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <TEntidade>()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }
示例#5
0
        public async Task <ResponseViewModel <Solicitantes> > AprovarSolicitacao(int IdSolicitacao)
        {
            try
            {
                Solicitacao solicitacao = db.Solicitacoes.Include("Estacionamento").Include("Estacionamento.Proprietario").FirstOrDefault(x => x.Id == IdSolicitacao);

                solicitacao.Status      = 0;
                solicitacao.DataEntrada = DateTime.Now;

                db.Entry <Solicitacao>(solicitacao).State = EntityState.Modified;
                db.SaveChanges();

                Solicitantes solicitantes = new Solicitantes
                {
                    Nickname     = solicitacao.Estacionamento.Proprietario.Nome,
                    InsereAlerta = !solicitacao.Estacionamento.TemEstacionamento
                };

                ResponseViewModel <Solicitantes> response = new ResponseViewModel <Solicitantes>
                {
                    Data        = solicitantes,
                    Mensagem    = "Dados retornados com sucesso!",
                    Serializado = true,
                    Sucesso     = true
                };

                return(response);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <Solicitantes>()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }
示例#6
0
 public async Task <ResponseViewModel <List <TEntidade> > > GetAll()
 {
     try
     {
         var response = new ResponseViewModel <List <TEntidade> >
         {
             Data     = await db.Set <TEntidade>().AsQueryable().ToListAsync(),
             Sucesso  = true,
             Mensagem = "Dados retornados com sucesso."
         };
         return(response);
     }
     catch (Exception e)
     {
         return(new ResponseViewModel <List <TEntidade> >()
         {
             Data = null,
             Serializado = true,
             Sucesso = false,
             Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
         });
     }
 }
示例#7
0
        public async Task <ResponseViewModel <List <EstacionamentosDoCliente> > > GetAllEstacionamentosDoCliente(string idCliente)
        {
            try
            {
                int valor = int.Parse(idCliente);
                List <EstacionamentosDoCliente> solicitacao = await db.Solicitacoes.Include("Estacionamento")
                                                              .Where(x => x.IdCliente.Equals(valor))
                                                              .Select(cl => new EstacionamentosDoCliente
                {
                    NomeEstacionamento = cl.Estacionamento.NomeEstacionamento,
                    PeriodoDe          = cl.DataEntrada,
                    PeriodoAte         = cl.DataSaida,
                    ValorTotal         = cl.ValorTotal
                }).ToListAsync();

                ResponseViewModel <List <EstacionamentosDoCliente> > response = new ResponseViewModel <List <EstacionamentosDoCliente> >
                {
                    Data        = solicitacao,
                    Mensagem    = "Dados retornados com sucesso!",
                    Serializado = true,
                    Sucesso     = true
                };

                return(response);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <List <EstacionamentosDoCliente> >()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }
示例#8
0
        public async Task <ResponseViewModel <List <UsuariosDoEstacionamento> > > GetUsuariosDoEstacionamento(string idUsuario)
        {
            try
            {
                int valor = int.Parse(idUsuario);
                List <UsuariosDoEstacionamento> solicitacao = await db.Solicitacoes.Include("Cliente")
                                                              .Where(x => x.IdEstacionamento.Equals(valor) && x.Status.Equals(1))
                                                              .Select(cl => new UsuariosDoEstacionamento
                {
                    NomeUsuario = cl.Cliente.Nome,
                    PeriodoDe   = cl.DataEntrada,
                    PeriodoAte  = cl.DataSaida,
                    ValorGanho  = cl.ValorTotalEstacionamento
                }).ToListAsync();

                ResponseViewModel <List <UsuariosDoEstacionamento> > response = new ResponseViewModel <List <UsuariosDoEstacionamento> >
                {
                    Data        = solicitacao,
                    Mensagem    = "Dados retornados com sucesso!",
                    Serializado = true,
                    Sucesso     = true
                };

                return(response);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <List <UsuariosDoEstacionamento> >()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + 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
                });
            }
        }
        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> > CadastrarCliente(CadastroCliente cadastroCliente)
        {
            try
            {
                Usuario existente  = new Usuario();
                Pessoa  existente1 = new Pessoa();

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

                    var valor2 = db.Pessoas.Where(x => x.CPF == cadastroCliente.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();

                string auxSenha = Helpers.GenerateRandomString();

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

                db.Usuarios.Add(usuario);

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

                ResponseViewModel <Usuario> response = new ResponseViewModel <Usuario> {
                    Data        = usuario,
                    Sucesso     = true,
                    Serializado = true,
                    Mensagem    = "Cadastro Realizado com Sucesso!"
                };

                return(response);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <Usuario>
                {
                    Data = null,
                    Sucesso = false,
                    Serializado = true,
                    Mensagem = "We were unable to fulfill your request: " + e.Message
                });
            }
        }
        public async Task <ResponseViewModel <Usuario> > EditarCliente(DadosCliente editarCliente)
        {
            try
            {
                DadosGeraisCliente dados = new DadosGeraisCliente();

                Task.Run(async() =>
                {
                    DadosGeraisCliente retorno = db.Usuarios.Join(db.Clientes,
                                                                  a => a.IdPessoa,
                                                                  b => b.Id,
                                                                  (a, b) => new { a, b }).
                                                 Join(db.Enderecos,
                                                      a2 => a2.b.IdEndereco,
                                                      eP => eP.Id,
                                                      (a2, eP) => new { a2, eP }).
                                                 Select((x) => new DadosGeraisCliente
                    {
                        usuario  = x.a2.a,
                        cliente  = x.a2.b,
                        endereco = x.eP
                    }).FirstOrDefault(x => x.usuario.Login.Equals(editarCliente.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();
                ClientesController estacionamentosController = new ClientesController();

                Usuario usuario = dados.usuario;
                usuario.Nome = editarCliente.Nickname;

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

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

                    db.Entry(usuario).State  = EntityState.Modified;
                    db.Entry(endereco).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
                });
            }
        }
示例#13
0
        public async Task <ResponseViewModel <Solicitacao> > CadastrarSolicitacao(Solicitacao solicitacao)
        {
            try
            {
                ResponseViewModel <StatusCliente> retornoCliente = new ResponseViewModel <StatusCliente>();
                var task = Task.Run(async() =>
                {
                    var statusCliente = await GetStatusCliente(solicitacao.IdCliente);
                    retornoCliente    = statusCliente;
                });
                task.Wait();
                if (!retornoCliente.Data.InProgress)
                {
                    Cliente cliente       = db.Clientes.Find(solicitacao.IdCliente);
                    bool    saldoNegativo = cliente.Saldo < 0 ? true : false;
                    if (saldoNegativo)
                    {
                        return new ResponseViewModel <Solicitacao>
                               {
                                   Data        = solicitacao,
                                   Mensagem    = "The Client has a negative balance!",
                                   Serializado = true,
                                   Sucesso     = false
                               }
                    }
                    ;

                    if (solicitacao.Status == 2)
                    {
                        List <Solicitacao> solicitacaos = db.Solicitacoes.Where(x => x.IdCliente == solicitacao.IdCliente && x.Status != 1 && x.Status != 4).ToList();

                        if (solicitacaos.Count > 0)
                        {
                            ResponseViewModel <Solicitacao> response = new ResponseViewModel <Solicitacao>
                            {
                                Data        = solicitacao,
                                Mensagem    = "The Customer is already in the process of being evaluated.",
                                Serializado = true,
                                Sucesso     = false
                            };
                            return(response);
                        }
                        else
                        {
                            solicitacao.ValorGanho = 0;
                            solicitacao.ValorTotal = 0;
                            solicitacao.ValorTotalEstacionamento = 0;

                            db.Set <Solicitacao>().Add(solicitacao);

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

                            ResponseViewModel <Solicitacao> response = new ResponseViewModel <Solicitacao>
                            {
                                Data        = solicitacao,
                                Mensagem    = "Request successfully registered!",
                                Serializado = true,
                                Sucesso     = true
                            };
                            return(response);
                        }
                    }
                    else
                    {
                        ResponseViewModel <Solicitacao> response = new ResponseViewModel <Solicitacao>
                        {
                            Data        = solicitacao,
                            Mensagem    = "To register the request, the status must be '2'!",
                            Sucesso     = false,
                            Serializado = true
                        };
                        return(response);
                    }
                }
                else
                {
                    ResponseViewModel <Solicitacao> response = new ResponseViewModel <Solicitacao>
                    {
                        Data        = solicitacao,
                        Mensagem    = "You're linked to a parking lot",
                        Sucesso     = false,
                        Serializado = true
                    };
                    return(response);
                }
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <Solicitacao>()
                {
                    Data = null,
                    Sucesso = true,
                    Serializado = false,
                    Mensagem = "We were unable to fulfill your request: " + e.Message
                });
            }
        }
示例#14
0
        public async Task <ResponseViewModel <Solicitantes> > FinalizarSolicitacao(int IdSolicitacao)
        {
            try
            {
                Solicitacao solicitacao = db.Solicitacoes.Include("Cliente").Include("Estacionamento").Include("Estacionamento.Proprietario").FirstOrDefault(x => x.Id == IdSolicitacao);
                Cliente     cliente     = solicitacao.Cliente;

                string tempo = "";
                solicitacao.Status    = 1;
                solicitacao.DataSaida = DateTime.Now;
                var diferenca     = (Convert.ToDateTime(solicitacao.DataSaida) - Convert.ToDateTime(solicitacao.DataEntrada));
                var minutosTotais = Convert.ToInt32((int)diferenca.TotalMinutes);
                var valorMinuto   = solicitacao.Estacionamento.ValorHora / 60.0;
                solicitacao.ValorTotal = valorMinuto * minutosTotais;
                solicitacao.ValorTotalEstacionamento = valorMinuto * minutosTotais * 0.9;
                solicitacao.ValorGanho = valorMinuto * minutosTotais * 0.1;
                cliente.Saldo         -= solicitacao.ValorTotal;

                db.Entry <Cliente>(cliente).State = EntityState.Modified;
                db.SaveChanges();

                var dias     = diferenca.Days;
                var horas    = diferenca.Hours;
                var minutos  = diferenca.Minutes;
                var segundos = diferenca.Seconds;
                if (dias > 0)
                {
                    tempo = dias + " dia(s), ";
                }
                if (horas > 0)
                {
                    tempo += horas + " hora(s), ";
                }

                tempo += minutos + " minuto(s) e " + segundos + " segundo(s)";
                solicitacao.TempoEstacionamento = tempo;

                db.Entry <Solicitacao>(solicitacao).State = EntityState.Modified;
                db.SaveChanges();

                Solicitantes solicitantes = new Solicitantes
                {
                    Nickname     = solicitacao.Estacionamento.Proprietario.Nome,
                    InsereAlerta = !solicitacao.Estacionamento.TemEstacionamento
                };

                ResponseViewModel <Solicitantes> response = new ResponseViewModel <Solicitantes>
                {
                    Data        = solicitantes,
                    Mensagem    = "Dados retornados com sucesso!",
                    Serializado = true,
                    Sucesso     = true
                };

                return(response);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <Solicitantes>()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }
示例#15
0
        public async Task <ResponseViewModel <List <Solicitantes> > > GetSolicitacoesParaFinalizarCliente(string idCliente)
        {
            try
            {
                int valor = int.Parse(idCliente);
                List <Solicitantes> solicitacao = new List <Solicitantes>();
                solicitacao = await db.Solicitacoes.Include("Cliente").Include("Estacionamento").Include("Estacionamento.Proprietario")
                              .Where(x => x.IdCliente.Equals(valor) && x.Status.Equals(3))
                              .Select(cl => new Solicitantes
                {
                    InsereAlerta  = !cl.Estacionamento.TemEstacionamento,
                    Nickname      = cl.Estacionamento.Proprietario.Nome,
                    NomeCliente   = cl.Cliente.Nome,
                    IdCliente     = cl.IdCliente,
                    IdSolicitacao = cl.Id,
                    Status        = cl.Status,
                    PeriodoDe     = null,
                    PeriodoAte    = null
                }).ToListAsync();

                if (solicitacao.Count > 0)
                {
                    foreach (var item in solicitacao)
                    {
                        Carro carro = CarroCliente(item.IdCliente);
                        item.Carro      = carro.Modelo;
                        item.PlacaCarro = carro.Placa;
                    }
                }

                if (solicitacao.Count == 0)
                {
                    Cliente      cliente      = db.Clientes.FirstOrDefault(x => x.Id == valor);
                    Solicitantes solicitantes = new Solicitantes
                    {
                        InsereAlerta = !cliente.TemCarro,
                        Nickname     = cliente.Nome
                    };
                    solicitacao.Add(solicitantes);
                }

                ResponseViewModel <List <Solicitantes> > response = new ResponseViewModel <List <Solicitantes> >
                {
                    Data        = solicitacao,
                    Mensagem    = "Dados retornados com sucesso!",
                    Serializado = true,
                    Sucesso     = true
                };

                return(response);
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <List <Solicitantes> >()
                {
                    Data = null,
                    Serializado = true,
                    Sucesso = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }
        public async Task <ResponseViewModel <Solicitacao> > CadastrarSolicitacao(Solicitacao solicitacao)
        {
            try
            {
                Cliente cliente       = db.Clientes.Find(solicitacao.IdCliente);
                bool    saldoNegativo = cliente.Saldo < 0 ? true : false;
                if (saldoNegativo)
                {
                    return new ResponseViewModel <Solicitacao>
                           {
                               Data        = solicitacao,
                               Mensagem    = "O Cliente está com saldo negativo!",
                               Serializado = true,
                               Sucesso     = false
                           }
                }
                ;

                if (solicitacao.Status == 2)
                {
                    List <Solicitacao> solicitacaos = db.Solicitacoes.Where(x => x.IdCliente == solicitacao.IdCliente && x.Status != 1 && x.Status != 4).ToList();

                    if (solicitacaos.Count > 0)
                    {
                        ResponseViewModel <Solicitacao> response = new ResponseViewModel <Solicitacao>
                        {
                            Data        = solicitacao,
                            Mensagem    = "O Cliente já se encontra em processo de avaliação.",
                            Serializado = false,
                            Sucesso     = true
                        };
                        return(response);
                    }
                    else
                    {
                        solicitacao.ValorGanho = 0;
                        solicitacao.ValorTotal = 0;
                        solicitacao.ValorTotalEstacionamento = 0;

                        db.Set <Solicitacao>().Add(solicitacao);

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

                        ResponseViewModel <Solicitacao> response = new ResponseViewModel <Solicitacao>
                        {
                            Data        = solicitacao,
                            Mensagem    = "Solicitação cadastrada com sucesso!",
                            Serializado = true,
                            Sucesso     = true
                        };
                        return(response);
                    }
                }
                else
                {
                    ResponseViewModel <Solicitacao> response = new ResponseViewModel <Solicitacao>
                    {
                        Data        = solicitacao,
                        Mensagem    = "Para Cadastrar a solicitação, é necessário que o status seja '2'!",
                        Sucesso     = false,
                        Serializado = true
                    };
                    return(response);
                }
            }
            catch (Exception e)
            {
                return(new ResponseViewModel <Solicitacao>()
                {
                    Data = null,
                    Sucesso = true,
                    Serializado = false,
                    Mensagem = "Não foi possivel atender a sua solicitação: " + e.Message
                });
            }
        }