public HttpResponse <List <GastoResponse> > Pendientes() { using (var db = new GeviApiContext()) { var gastosPendientes = db.Gastos .Where(g => g.Estado == Estado.PENDIENTE_APROBACION) .Include(g => g.Viaje.Proyecto) .Include(g => g.Tipo) .Include(g => g.Empleado) .Include(g => g.Moneda) .ToList(); var response = new List <GastoResponse>(); foreach (var g in gastosPendientes) { var nuevo = new GastoResponse() { Id = g.Id, Estado = g.Estado, Fecha = g.Fecha, Moneda = g.Moneda?.Nombre, Tipo = g.Tipo?.Nombre, Total = g.Total, Empleado = g.Empleado?.Nombre, Proyecto = g.Viaje?.Proyecto?.Nombre, ViajeId = g.Viaje == null ? 0 : g.Viaje.Id }; response.Add(nuevo); } return(newHttpListResponse(response)); } }
public HttpResponse <List <UsuarioResponse> > Todos() { using (var db = new GeviApiContext()) { var usuarios = db.Usuarios.ToList(); var response = new List <UsuarioResponse>(); foreach (var u in usuarios) { var nuevo = new UsuarioResponse() { Id = u.Id, Email = u.Email, EsEmpleado = u is Empleado, FechaRegistro = u.FechaRegistro, Nombre = u.Nombre }; response.Add(nuevo); } return(newHttpListResponse(response)); } }
public HttpResponse <List <ProyectoResponse> > Todos() { using (var db = new GeviApiContext()) { var proyectos = db.Proyectos .Include(p => p.Cliente) .ToList(); var response = new List <ProyectoResponse>(); foreach (var p in proyectos) { var nuevo = new ProyectoResponse() { Id = p.Id, Nombre = p.Nombre, FechaInicio = p.FechaInicio, Cliente = p.Cliente?.Nombre }; response.Add(nuevo); } return(newHttpListResponse(response)); } }
public HttpResponse <ProyectoResponse> BorrarProyecto(ProyectoRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El proyecto que se intenta borrar es invalido."))); } using (var db = new GeviApiContext()) { var pro = db.Proyectos .Where(p => p.Nombre.Equals(request.Nombre)) .Include(c => c.Cliente) .FirstOrDefault(); if (pro == null) { return(newHttpErrorResponse(new Error("No existe el Proyecto"))); } var viajes = db.Viajes .Where(v => v.Proyecto.Id == pro.Id) .Include(v => v.Empleado) .Include(v => v.Gastos) .Include(v => v.Proyecto) .ToList(); var response = new ProyectoResponse() { Id = pro.Id, Nombre = pro.Nombre, FechaInicio = pro.FechaInicio, Cliente = pro.Cliente?.Nombre }; if (viajes != null) { foreach (var v in viajes) { var gastos = db.Gastos .Where(g => g.Viaje.Id == v.Id) .ToList(); if (gastos != null) { foreach (var g in gastos) { db.Gastos.Remove(g); db.SaveChanges(); } } db.Viajes.Remove(v); db.SaveChanges(); } } db.Proyectos.Remove(pro); db.SaveChanges(); return(newHttpResponse(response)); } }
public HttpResponse <List <ViajeResponse> > Pendientes() { using (var db = new GeviApiContext()) { var viajes = db.Viajes .Where(v => v.Estado == Estado.PENDIENTE_APROBACION) .Include(v => v.Empleado) .Include(v => v.Gastos.Select(g => g.Tipo)) .Include(v => v.Gastos.Select(g => g.Moneda)) .Include(v => v.Proyecto.Cliente) .ToList(); var response = new List <ViajeResponse>(); foreach (var v in viajes) { var nuevo = new ViajeResponse() { Id = v.Id, EmpleadoId = v.Empleado.Id, Estado = v.Estado, FechaFin = v.FechaFin, FechaInicio = v.FechaInicio, Gastos = null, Proyecto = v.Proyecto?.Nombre, ClienteProyectoNombre = v.Proyecto?.Cliente?.Nombre, EmpleadoNombre = v.Empleado?.Nombre }; if (v.Gastos != null) { var gastosRespone = new List <GastoResponse>(); foreach (var g in v.Gastos) { var nuevoGastoResponse = new GastoResponse() { Id = g.Id, Estado = g.Estado, Fecha = g.Fecha, Moneda = g.Moneda?.Nombre, Tipo = g.Tipo?.Nombre, ViajeId = v.Id, Proyecto = g.Viaje?.Proyecto?.Nombre, Total = g.Total, Empleado = g.Empleado?.Nombre }; gastosRespone.Add(nuevoGastoResponse); } nuevo.Gastos = gastosRespone; } response.Add(nuevo); } return(newHttpListResponse(response)); } }
private bool esValido(ViajeRequest viaje, GeviApiContext ctx, Empleado emp) { var res = ctx.Viajes .Where(v => v.Empleado.Email.Equals(emp.Email)) .ToList(); bool esValido = true; if (res.Count != 0) { foreach (var v in res) { if (esValido) { var inicioViajeNuevoValido = NotBetween(viaje.FechaInicio, v.FechaInicio, v.FechaFin); var finViajeNuevoValido = NotBetween(viaje.FechaFin, v.FechaInicio, v.FechaFin); if (inicioViajeNuevoValido && finViajeNuevoValido) { var inicioViajeExistenteValido = NotBetween(v.FechaInicio, viaje.FechaInicio, viaje.FechaFin); var finViajeExistenteValido = NotBetween(v.FechaFin, viaje.FechaInicio, viaje.FechaFin); esValido = inicioViajeExistenteValido && finViajeExistenteValido; } else { esValido = false; } } } } return(esValido); }
public HttpResponse <ProyectoResponse> ModificarProyecto(ProyectoRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El Proyecto que se intenta modificar es invalido."))); } using (var db = new GeviApiContext()) { var pro = db.Proyectos .Where(p => p.Nombre.Equals(request.Nombre)) .Include(p => p.Cliente) .FirstOrDefault(); if (pro == null) { return(newHttpErrorResponse(new Error("No existe el Proyecto"))); } if (pro.Cliente != null && pro.Cliente.Nombre.Equals(request.ClienteNombre) && pro.Nombre.Equals(request.Nombre) && pro.FechaInicio == request.FechaInicio) { return(newHttpErrorResponse(new Error("El proyecto no se modifico"))); } var cli = db.Clientes .Where(c => c.Nombre.Equals(request.ClienteNombre)) .Include(c => c.Proyectos) .Include(c => c.Tipo) .FirstOrDefault(); if (cli != null) { pro.Nombre = request.Nombre; pro.FechaInicio = request.FechaInicio; pro.Cliente = cli; db.Entry(pro).State = EntityState.Modified; db.SaveChanges(); var response = new ProyectoResponse() { Id = pro.Id, Nombre = pro.Nombre, FechaInicio = pro.FechaInicio, Cliente = pro.Cliente?.Nombre }; return(newHttpResponse(response)); } return(newHttpErrorResponse(new Error("No existe el cliente"))); } }
public HttpResponse <UsuarioResponse> CambiarContrasenia(UsuarioRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El usuario que se intenta modificar es invalido."))); } using (var db = new GeviApiContext()) { var usuario = db.Usuarios .Where(u => u.Id == request.UsuarioId) .FirstOrDefault(); if (usuario == null) { return(newHttpErrorResponse(new Error("No existe el usuario"))); } var encryptionManager = new EncryptionManager(); var nuevaContraseniaEncriptada = encryptionManager.Encryptdata(request.Contrasenia); var viejaContraseniaEncriptada = encryptionManager.Encryptdata(request.ContraseniaVieja); if (!usuario.Contrasenia.Equals(viejaContraseniaEncriptada)) { return(newHttpErrorResponse(new Error("La contraseña actual no es correcta"))); } if (nuevaContraseniaEncriptada == viejaContraseniaEncriptada) { return(newHttpErrorResponse(new Error("La nueva contraseña no puede ser igual a la anterior"))); } usuario.Contrasenia = nuevaContraseniaEncriptada; db.Entry(usuario).State = EntityState.Modified; db.SaveChanges(); var response = new UsuarioResponse() { Id = usuario.Id, Nombre = usuario.Nombre, Email = usuario.Email, EsEmpleado = usuario is Empleado, FechaRegistro = usuario.FechaRegistro }; return(newHttpResponse(response)); } }
public HttpResponse <ProyectoResponse> NuevoProyecto(ProyectoRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El Proyecto que se intenta ingresar es invalido."))); } using (var db = new GeviApiContext()) { var cli = db.Clientes .Where(c => c.Nombre.Equals(request.ClienteNombre)) .Include(c => c.Proyectos) .Include(c => c.Tipo) .FirstOrDefault(); if (cli != null) { var nuevo = new Proyecto() { Nombre = request.Nombre, Cliente = cli, FechaInicio = request.FechaInicio }; try { db.Proyectos.Add(nuevo); db.SaveChanges(); } catch (DbUpdateException) { return(newHttpErrorResponse(new Error("Ya existe un Proyecto con ese nombre."))); } var response = new ProyectoResponse() { Id = nuevo.Id, Nombre = nuevo.Nombre, FechaInicio = nuevo.FechaInicio, Cliente = nuevo.Cliente?.Nombre }; return(newHttpResponse(response)); } return(newHttpErrorResponse(new Error("No existe el cliente."))); } }
public HttpResponse <ClienteResponse> BuscarCliente(ClienteRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El cliente que se intenta buscar es invalido."))); } using (var db = new GeviApiContext()) { var cli = db.Clientes .Where(c => c.Nombre.Equals(request.Nombre)) .Include(c => c.Proyectos) .FirstOrDefault(); if (cli == null) { return(newHttpErrorResponse(new Error("No existe el cliente"))); } var response = new ClienteResponse() { Id = cli.Id, Nombre = cli.Nombre, Proyectos = null, Tipo = cli.Tipo }; if (cli.Proyectos != null) { var proyectosResponse = new List <ProyectoResponse>(); foreach (var p in cli.Proyectos) { var nuevoProyResponse = new ProyectoResponse() { Id = p.Id, Nombre = p.Nombre, Cliente = cli.Nombre }; proyectosResponse.Add(nuevoProyResponse); } response.Proyectos = proyectosResponse; } return(newHttpResponse(response)); } }
public HttpResponse <List <ClienteResponse> > Todos() { using (var db = new GeviApiContext()) { var clientes = db.Clientes .Include(c => c.Proyectos) .Include(c => c.Tipo) .ToList(); var response = new List <ClienteResponse>(); foreach (var c in clientes) { var nuevo = new ClienteResponse() { Id = c.Id, Nombre = c.Nombre, Tipo = c.Tipo, Proyectos = null }; if (c.Proyectos != null) { var proyectoRespone = new List <ProyectoResponse>(); foreach (var p in c.Proyectos) { var nuevoProyectoResponse = new ProyectoResponse() { Id = p.Id, Nombre = p.Nombre, Cliente = p.Cliente?.Nombre }; proyectoRespone.Add(nuevoProyectoResponse); } nuevo.Proyectos = proyectoRespone; } response.Add(nuevo); } return(newHttpListResponse(response)); } }
public HttpResponse <GastoResponse> ValidarGasto(ValidacionRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El gasto que se intenta validar es invalido"))); } using (var db = new GeviApiContext()) { var gasto = db.Gastos .Where(g => g.Id == request.Id) .Include(g => g.Tipo) .Include(g => g.Empleado) .Include(g => g.Viaje.Proyecto) .Include(g => g.Moneda) .FirstOrDefault(); if (gasto != null) { gasto.Estado = request.Estado; db.Entry(gasto).State = EntityState.Modified; db.SaveChanges(); var response = new GastoResponse() { Id = gasto.Id, Moneda = gasto.Moneda?.Nombre, Estado = gasto.Estado, Fecha = gasto.Fecha, Tipo = gasto.Tipo?.Nombre, Total = gasto.Total, Empleado = gasto.Empleado?.Nombre, Proyecto = gasto.Viaje?.Proyecto?.Nombre, ViajeId = gasto.Viaje == null ? 0 : gasto.Viaje.Id }; return(newHttpResponse(response)); } return(newHttpErrorResponse(new Error("No existe el gasto"))); } }
public HttpResponse <ClienteResponse> NuevoCliente(ClienteRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El cliente que se intenta ingresar es invalido."))); } using (var db = new GeviApiContext()) { var tipoCli = db.TipoClientes .Where(tc => tc.Nombre == request.Tipo) .FirstOrDefault(); var nuevo = new Cliente() { Nombre = request.Nombre, Proyectos = null, Tipo = tipoCli }; try { db.Clientes.Add(nuevo); db.SaveChanges(); } catch (DbUpdateException) { return(newHttpErrorResponse(new Error("Ya existe un cliente con ese nombre."))); } var response = new ClienteResponse() { Id = nuevo.Id, Nombre = nuevo.Nombre, Proyectos = null, Tipo = tipoCli }; return(newHttpResponse(response)); } }
public HttpResponse <UsuarioResponse> ModificarUsuario(UsuarioRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El usuario que se intenta modificar es invalido."))); } using (var db = new GeviApiContext()) { var usuario = db.Usuarios .Where(u => u.Id == request.UsuarioId) .FirstOrDefault(); if (usuario == null) { return(newHttpErrorResponse(new Error("No existe el usuario"))); } usuario.Nombre = request.Nombre; usuario.Email = request.Email; db.Entry(usuario).State = EntityState.Modified; db.SaveChanges(); var response = new UsuarioResponse() { Id = usuario.Id, Nombre = usuario.Nombre, Email = usuario.Email, EsEmpleado = usuario is Empleado, FechaRegistro = usuario.FechaRegistro }; return(newHttpResponse(response)); } }
public HttpResponse <List <ViajeResponse> > EntreFechas(ListadoViajesRequest request) { using (var db = new GeviApiContext()) { var viajes = db.Viajes .Where(v => (!request.FechaInicio.Equals(DateTime.MinValue) ? v.FechaInicio >= request.FechaInicio : true) && (!request.FechaFin.Equals(DateTime.MinValue) ? v.FechaFin <= request.FechaFin : true) && (!String.IsNullOrEmpty(request.ClienteNombre) && (v.Proyecto != null) && (v.Proyecto.Cliente != null) ? v.Proyecto.Cliente.Nombre.Equals(request.ClienteNombre) : true)) .Include(v => v.Empleado) .Include(v => v.Gastos.Select(g => g.Tipo)) .Include(v => v.Gastos.Select(g => g.Moneda)) .Include(v => v.Proyecto.Cliente) .ToList(); var response = new List <ViajeResponse>(); foreach (var v in viajes) { var nuevo = new ViajeResponse() { Id = v.Id, EmpleadoId = v.Empleado.Id, Estado = v.Estado, FechaFin = v.FechaFin, FechaInicio = v.FechaInicio, Gastos = null, Proyecto = v.Proyecto?.Nombre, ClienteProyectoNombre = v.Proyecto?.Cliente?.Nombre, EmpleadoNombre = v.Empleado.Nombre }; if (v.Gastos != null) { var gastosRespone = new List <GastoResponse>(); foreach (var g in v.Gastos) { var nuevoGastoResponse = new GastoResponse() { Id = g.Id, Estado = g.Estado, Fecha = g.Fecha, Moneda = g.Moneda?.Nombre, Tipo = g.Tipo?.Nombre, ViajeId = v.Id, Proyecto = g.Viaje?.Proyecto?.Nombre, Total = g.Total, Empleado = g.Empleado?.Nombre }; gastosRespone.Add(nuevoGastoResponse); } nuevo.Gastos = gastosRespone; } response.Add(nuevo); } return(newHttpListResponse(response)); } }
public HttpResponse <GastoResponse> NuevoGasto(GastoRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El gasto que se intenta ingresar es invalido."))); } using (var db = new GeviApiContext()) { var empleado = db.Usuarios .OfType <Empleado>() .Where(u => u is Empleado && u.Id == request.EmpleadoId) .Include(u => u.Viajes) .FirstOrDefault(); if (empleado != null) { var viaje = db.Viajes .Where(v => v.Id == request.ViajeId) .Include(v => v.Proyecto) .Include(v => v.Gastos) .Include(v => v.Empleado) .FirstOrDefault(); if (viaje != null && request.Fecha >= viaje.FechaInicio && request.Fecha <= viaje.FechaFin) { var tipo = db.TipoGastos .Where(t => t.Nombre.Equals(request.Tipo)) .FirstOrDefault(); var moneda = db.Monedas .Where(m => m.Nombre.Equals(request.MonedaNombre)) .FirstOrDefault(); var nuevo = new Gasto() { Estado = request.Estado, Fecha = request.Fecha, Moneda = moneda, Tipo = tipo, Empleado = empleado, Viaje = viaje, Total = request.Total }; try { db.Gastos.Add(nuevo); db.SaveChanges(); } catch (DbUpdateException) { return(newHttpErrorResponse(new Error("Error al ingresar nuevo gasto."))); } var response = new GastoResponse() { Id = nuevo.Id, Estado = nuevo.Estado, Fecha = nuevo.Fecha, Moneda = nuevo.Moneda?.Nombre, Tipo = nuevo.Tipo?.Nombre, ViajeId = nuevo.Viaje == null ? 0 : nuevo.Viaje.Id, Proyecto = nuevo.Viaje?.Proyecto?.Nombre, Empleado = nuevo.Empleado?.Nombre, Total = nuevo.Total }; return(newHttpResponse(response)); } else { if (viaje == null) { return(newHttpErrorResponse(new Error("El viaje no existe"))); } else { return(newHttpErrorResponse(new Error("La fecha del gasto debe pertenecer al viaje"))); } } } return(newHttpErrorResponse(new Error("El empleado no existe"))); } }
public HttpResponse <List <ViajeResponse> > Historial(ViajeRequest request) { using (var db = new GeviApiContext()) { var empleado = db.Usuarios .OfType <Empleado>() .Where(u => u is Empleado && u.Id == request.EmpleadoId) .Include(u => u.Viajes.Select(v => v.Proyecto.Cliente)) .Include(u => u.Viajes.Select(v => v.Gastos.Select(g => g.Tipo))) .Include(u => u.Viajes.Select(v => v.Gastos.Select(g => g.Moneda))) .FirstOrDefault(); if (empleado != null) { var viajes = empleado?.Viajes; var response = new List <ViajeResponse>(); if (viajes != null) { foreach (var v in viajes) { var nuevo = new ViajeResponse() { Id = v.Id, EmpleadoId = request.EmpleadoId, Estado = v.Estado, FechaFin = v.FechaFin, FechaInicio = v.FechaInicio, Gastos = null, Proyecto = v.Proyecto?.Nombre, ClienteProyectoNombre = v.Proyecto.Cliente.Nombre, EmpleadoNombre = empleado.Nombre }; if (v.Gastos != null) { var gastosRespone = new List <GastoResponse>(); foreach (var g in v.Gastos) { var nuevoGastoResponse = new GastoResponse() { Id = g.Id, Estado = g.Estado, Fecha = g.Fecha, Moneda = g.Moneda?.Nombre, Tipo = g.Tipo?.Nombre, ViajeId = v.Id, Proyecto = g.Viaje?.Proyecto?.Nombre, Total = g.Total, Empleado = g.Empleado?.Nombre }; gastosRespone.Add(nuevoGastoResponse); } nuevo.Gastos = gastosRespone; } response.Add(nuevo); } } return(newHttpListResponse(response)); } return(newHttpErrorListResponse(new Error("No existe el empleado"))); } }
public HttpResponse <ViajeResponse> NuevoViaje(ViajeRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El viaje que se intenta ingresar es invalido."))); } using (var db = new GeviApiContext()) { var empleado = db.Usuarios .OfType <Empleado>() .Where(u => u is Empleado && u.Id == request.EmpleadoId) .Include(u => u.Viajes) .FirstOrDefault(); var proyecto = db.Proyectos .Where(p => p.Nombre.Equals(request.ProyectoNombre)) .Include(p => p.Cliente) .FirstOrDefault(); if (request?.FechaInicio < request?.FechaFin && empleado != null && proyecto != null && esValido(request, db, empleado)) { var nuevo = new Viaje() { Empleado = empleado, Estado = Estado.PENDIENTE_APROBACION, FechaInicio = request.FechaInicio, FechaFin = request.FechaFin, Gastos = null, Proyecto = proyecto }; try { db.Viajes.Add(nuevo); db.SaveChanges(); } catch (DbUpdateException) { return(newHttpErrorResponse(new Error("Error al ingresar el viaje."))); } var response = new ViajeResponse() { Id = nuevo.Id, EmpleadoId = empleado.Id, Estado = Estado.PENDIENTE_APROBACION, FechaInicio = request.FechaInicio, FechaFin = request.FechaFin, Gastos = null, Proyecto = proyecto?.Nombre, EmpleadoNombre = empleado?.Nombre, ClienteProyectoNombre = proyecto?.Cliente?.Nombre }; return(newHttpResponse(response)); } else { if (request?.FechaInicio >= request?.FechaFin) { return(newHttpErrorResponse(new Error("La fecha de inicio debe ser mayor a la de fin"))); } else { if (empleado == null) { return(newHttpErrorResponse(new Error("No existe el empleado"))); } else { if (proyecto == null) { return(newHttpErrorResponse(new Error("No existe el proyecto"))); } else { return(newHttpErrorResponse(new Error("Ya existe un viaje en esa fecha para el empleado."))); } } } } } }
public HttpResponse <ViajeResponse> ValidarViaje(ValidacionRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("La request es invalida."))); } using (var db = new GeviApiContext()) { var viaje = db.Viajes .Where(v => v.Id == request.Id) .Include(u => u.Empleado) .Include(w => w.Proyecto.Cliente) .FirstOrDefault(); if (viaje != null) { viaje.Estado = request.Estado; db.Entry(viaje).State = EntityState.Modified; db.SaveChanges(); var response = new ViajeResponse() { Id = viaje.Id, EmpleadoId = viaje.Empleado.Id, EmpleadoNombre = viaje.Empleado?.Nombre, Estado = request.Estado, FechaInicio = viaje.FechaInicio, FechaFin = viaje.FechaFin, Gastos = null, Proyecto = viaje.Proyecto?.Nombre, ClienteProyectoNombre = viaje.Proyecto?.Cliente?.Nombre }; if (viaje.Gastos != null) { var gastos = new List <GastoResponse>(); foreach (var g in viaje.Gastos) { var nuevoGasto = new GastoResponse() { Id = g.Id, Estado = g.Estado, Fecha = g.Fecha, Moneda = g.Moneda?.Nombre, Tipo = g.Tipo?.Nombre, Total = g.Total, ViajeId = viaje.Id, Proyecto = g.Viaje?.Proyecto?.Nombre, Empleado = g.Empleado?.Nombre }; gastos.Add(nuevoGasto); } response.Gastos = gastos; } return(newHttpResponse(response)); } return(newHttpErrorResponse(new Error("No existe el viaje"))); } }
public HttpResponse <EstadisticasResponse> GetEstadisticas(EstadisticasRequest request) { if (request == null) { return(newHttpEstadisticasErrorResponse(new Error("Los parametros pasados son invalidos."))); } using (var db = new GeviApiContext()) { var totalTransporte = db.Gastos .Where(g => g.Estado == Estado.APROBADO && (!String.IsNullOrEmpty(request.ClienteNombre) && (g.Viaje != null) && (g.Viaje.Proyecto != null) && (g.Viaje.Proyecto.Cliente != null) ? g.Viaje.Proyecto.Cliente.Nombre.Equals(request.ClienteNombre) : true) && (request.EmpleadoId > 0 && (g.Empleado != null) ? g.Empleado.Id == request.EmpleadoId : true) && (!request.FechaInicio.Equals(DateTime.MinValue) ? g.Fecha >= request.FechaInicio : true) && (!request.FechaFin.Equals(DateTime.MinValue) ? g.Fecha <= request.FechaFin : true)) .Where(g => g.Tipo.Nombre.Equals("TRANSPORTE")) .Include(g => g.Empleado) .Include(g => g.Tipo) .Include(g => g.Viaje) .ToList() .Select(g => g.Total) .Sum(); var totalGastronomico = db.Gastos .Where(g => g.Estado == Estado.APROBADO && (!String.IsNullOrEmpty(request.ClienteNombre) && (g.Viaje != null) && (g.Viaje.Proyecto != null) && (g.Viaje.Proyecto.Cliente != null) ? g.Viaje.Proyecto.Cliente.Nombre.Equals(request.ClienteNombre) : true) && (request.EmpleadoId > 0 && (g.Empleado != null) ? g.Empleado.Id == request.EmpleadoId : true) && (!request.FechaInicio.Equals(DateTime.MinValue) ? g.Fecha >= request.FechaInicio : true) && (!request.FechaFin.Equals(DateTime.MinValue) ? g.Fecha <= request.FechaFin : true)) .Where(g => g.Tipo.Nombre.Equals("GASTRONOMICO")) .Include(g => g.Empleado) .Include(g => g.Tipo) .Include(g => g.Viaje) .ToList() .Select(g => g.Total) .Sum(); var totalTelefonia = db.Gastos .Where(g => g.Estado == Estado.APROBADO && (!String.IsNullOrEmpty(request.ClienteNombre) && (g.Viaje != null) && (g.Viaje.Proyecto != null) && (g.Viaje.Proyecto.Cliente != null) ? g.Viaje.Proyecto.Cliente.Nombre.Equals(request.ClienteNombre) : true) && (request.EmpleadoId > 0 && (g.Empleado != null) ? g.Empleado.Id == request.EmpleadoId : true) && (!request.FechaInicio.Equals(DateTime.MinValue) ? g.Fecha >= request.FechaInicio : true) && (!request.FechaFin.Equals(DateTime.MinValue) ? g.Fecha <= request.FechaFin : true)) .Where(g => g.Tipo.Nombre.Equals("TELEFONIA")) .Include(g => g.Empleado) .Include(g => g.Tipo) .Include(g => g.Viaje) .ToList() .Select(g => g.Total) .Sum(); var totalOtros = db.Gastos .Where(g => g.Estado == Estado.APROBADO && (!String.IsNullOrEmpty(request.ClienteNombre) && (g.Viaje != null) && (g.Viaje.Proyecto != null) && (g.Viaje.Proyecto.Cliente != null) ? g.Viaje.Proyecto.Cliente.Nombre.Equals(request.ClienteNombre) : true) && (request.EmpleadoId > 0 && (g.Empleado != null) ? g.Empleado.Id == request.EmpleadoId : true) && (!request.FechaInicio.Equals(DateTime.MinValue) ? g.Fecha >= request.FechaInicio : true) && (!request.FechaFin.Equals(DateTime.MinValue) ? g.Fecha <= request.FechaFin : true)) .Where(g => g.Tipo.Nombre.Equals("OTROS")) .Include(g => g.Empleado) .Include(g => g.Tipo) .Include(g => g.Viaje) .ToList() .Select(g => g.Total) .Sum(); var response = new EstadisticasResponse() { TotalTransporte = totalTransporte, TotalGastronomico = totalGastronomico, TotalTelefonia = totalTelefonia, TotalOtros = totalOtros }; return(newHttpEstadisticasResponse(response)); } }
public HttpResponse <UsuarioResponse> NuevoUsuario(UsuarioRequest usuario) { if (usuario == null) { return(newHttpErrorResponse(new Error("El usuario que se intenta ingresar es invalido."))); } Usuario nuevo = null; switch (usuario.EsEmpleado) { case true: nuevo = new Empleado() { Email = usuario.Email, Contrasenia = usuario.Contrasenia, Nombre = usuario.Nombre, FechaRegistro = DateTime.Now, Viajes = null }; break; case false: nuevo = new Administrativo() { Email = usuario.Email, Contrasenia = usuario.Contrasenia, Nombre = usuario.Nombre, FechaRegistro = DateTime.Now }; break; default: break; } var encryptionManager = new EncryptionManager(); nuevo.Contrasenia = encryptionManager.Encryptdata(nuevo.Contrasenia); using (var db = new GeviApiContext()) { try { db.Usuarios.Add(nuevo); db.SaveChanges(); } catch (DbUpdateException) { return(newHttpErrorResponse(new Error("Ya existe un usuario con ese email."))); } var response = new UsuarioResponse() { Id = nuevo.Id, Email = nuevo.Email, Nombre = nuevo.Nombre, EsEmpleado = nuevo is Empleado, FechaRegistro = DateTime.Today }; return(newHttpResponse(response)); } }
public HttpResponse <ClienteResponse> ModificarCliente(ClienteRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El cliente que se intenta modificar es invalido."))); } using (var db = new GeviApiContext()) { var cli = db.Clientes .Where(c => c.Nombre.Equals(request.Nombre)) .Include(c => c.Proyectos) .Include(c => c.Tipo) .FirstOrDefault(); var tipo = db.TipoClientes .Where(t => t.Nombre.Equals(request.Tipo)) .FirstOrDefault(); if (cli == null) { return(newHttpErrorResponse(new Error("No existe el cliente"))); } if (cli.Tipo == tipo) { return(newHttpErrorResponse(new Error("El cliente ya es de ese tipo"))); } cli.Nombre = request.Nombre; cli.Tipo = tipo; db.Entry(cli).State = EntityState.Modified; db.SaveChanges(); var response = new ClienteResponse() { Id = cli.Id, Nombre = cli.Nombre, Tipo = cli.Tipo, Proyectos = null }; if (cli.Proyectos != null) { var proyectosResponse = new List <ProyectoResponse>(); foreach (var p in cli.Proyectos) { var nuevoProyResponse = new ProyectoResponse() { Id = p.Id, Nombre = p.Nombre, Cliente = cli.Nombre }; proyectosResponse.Add(nuevoProyResponse); } response.Proyectos = proyectosResponse; } return(newHttpResponse(response)); } }
public HttpResponse <LoginResponse> Login(string username, string password) { var encryptionManager = new EncryptionManager(); var pass = encryptionManager.Encryptdata(password); using (var db = new GeviApiContext()) { var user = db.Usuarios .Where(u => u.Email.Equals(username) && u.Contrasenia.Equals(pass)) .FirstOrDefault(); if (user != null) { #region cargarListas var clientes = db.Clientes .Include(c => c.Proyectos) .Include(c => c.Tipo) .ToList(); var tipoClientes = db.TipoClientes.ToList(); var monedas = db.Monedas.ToList(); var tipoGastos = db.TipoGastos.ToList(); var clientesResponse = new List <ClienteResponse>(); var tipoClientesResponse = new List <TipoResponse>(); var tipoGastosResponse = new List <TipoResponse>(); foreach (var c in clientes) { var nuevoCliente = new ClienteResponse() { Id = c.Id, Nombre = c.Nombre, Proyectos = null, // lo devuelvo null porque no me interesa devolver los proyectos Tipo = c.Tipo }; clientesResponse.Add(nuevoCliente); } foreach (var tc in tipoClientes) { var nuevoTipoCliente = new TipoResponse() { TipoNombre = tc.Nombre }; tipoClientesResponse.Add(nuevoTipoCliente); } foreach (var tg in tipoGastos) { var nuevoTipoGasto = new TipoResponse() { TipoNombre = tg.Nombre }; tipoGastosResponse.Add(nuevoTipoGasto); } #endregion if (user is Empleado) { Empleado usuario = user as Empleado; var viajes = db.Viajes .Where(v => v.Empleado.Id == usuario.Id) .Where(v => v.Estado == Estado.APROBADO) .Include(v => v.Empleado) .Include(v => v.Gastos) .Include(v => v.Proyecto) .ToList(); var response = new List <ViajeResponse>(); #region traerViajesDelEmpleado if (viajes != null) { foreach (var v in viajes) { var nuevo = new ViajeResponse() { Id = v.Id, EmpleadoId = usuario.Id, Estado = v.Estado, FechaFin = v.FechaFin, FechaInicio = v.FechaInicio, Gastos = null, Proyecto = v.Proyecto?.Nombre }; if (v.Gastos != null) { var gastosRespone = new List <GastoResponse>(); foreach (var g in v.Gastos) { var nuevoGastoResponse = new GastoResponse() { Id = g.Id, Estado = g.Estado, Fecha = g.Fecha, Moneda = g.Moneda?.Nombre, Tipo = g.Tipo?.Nombre, ViajeId = v.Id, Proyecto = g.Viaje?.Proyecto?.Nombre, Total = g.Total, Empleado = g.Empleado?.Nombre }; gastosRespone.Add(nuevoGastoResponse); } nuevo.Gastos = gastosRespone; } response.Add(nuevo); } } #endregion return(newHttpResponse(new LoginResponse() { Id = user.Id, Email = user.Email, FechaRegistro = user.FechaRegistro, Nombre = user.Nombre, Clientes = clientesResponse, Monedas = monedas, TipoClientes = tipoClientesResponse, TipoGastos = tipoGastosResponse, EsEmpleado = user is Empleado, ViajesAprobados = response })); } if (user is Administrativo) { var empleados = db.Usuarios .OfType <Empleado>() .ToList(); return(newHttpResponse(new LoginResponse() { Id = user.Id, Email = user.Email, FechaRegistro = user.FechaRegistro, Nombre = user.Nombre, Clientes = clientesResponse, Monedas = monedas, TipoClientes = tipoClientesResponse, TipoGastos = tipoGastosResponse, EsEmpleado = user is Empleado, Empleados = empleados })); } return(newHttpResponse(new LoginResponse() { Id = user.Id, Email = user.Email, FechaRegistro = user.FechaRegistro, Nombre = user.Nombre, Clientes = clientesResponse, Monedas = monedas, TipoClientes = tipoClientesResponse, TipoGastos = tipoGastosResponse, EsEmpleado = user is Empleado })); } else { return(newHttpErrorResponse(new Error("Login invalido. Verifique las credenciales."))); } } }
public HttpResponse <ClienteResponse> BorrarCliente(ClienteRequest request) { if (request == null) { return(newHttpErrorResponse(new Error("El cliente que se intenta borrar es invalido."))); } using (var db = new GeviApiContext()) { var cli = db.Clientes .Where(c => c.Nombre == request.Nombre) .Include(c => c.Proyectos.Select(p => p.Cliente)) .Include(c => c.Tipo) .FirstOrDefault(); if (cli == null) { return(newHttpErrorResponse(new Error("No existe el cliente"))); } var proyectos = db.Proyectos .Where(p => p.Cliente.Id == cli.Id) .Include(p => p.Cliente) .ToList(); var response = new ClienteResponse() { Id = cli.Id, Nombre = cli.Nombre, Proyectos = null, Tipo = cli.Tipo }; if (proyectos != null) { var proyectosResponse = new List <ProyectoResponse>(); foreach (var p in proyectos) { var nuevoProyResponse = new ProyectoResponse() { Id = p.Id, Nombre = p.Nombre, Cliente = cli?.Nombre }; proyectosResponse.Add(nuevoProyResponse); var viajes = db.Viajes .Where(v => v.Proyecto.Id == p.Id) .Include(v => v.Proyecto) .ToList(); if (viajes != null) { foreach (var v in viajes) { db.Viajes.Remove(v); db.SaveChanges(); } } db.Proyectos.Remove(p); db.SaveChanges(); } response.Proyectos = proyectosResponse; } db.Clientes.Remove(cli); db.SaveChanges(); return(newHttpResponse(response)); } }