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 }); } }
//[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 }); } }
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 }); } }
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 }); } }
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 }); } }
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 }); } }
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 }); } }
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 }); } }
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 }); } }
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 }); } }