public static void EditarAuto(ProyectoAutoContext _db, int _idOriginal, string _nombre, string _patente, TipoVehiculo _tipo, string _marca, string _modelo, int _year, int _kilometraje, int _idFlota, int _idNuevoOperador = 0) { Auto autoOriginal = _db.Autos.Where(a => a.Id == _idOriginal).FirstOrDefault(); Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); #region Cambiar Flota if (_idFlota == 0) { if (autoOriginal.Flota != null) { autoOriginal.Flota.Autos.Remove(autoOriginal); } } else if (flota != null) { autoOriginal.Flota = flota; } #endregion #region CambiarOperador if (_idNuevoOperador == 0) { if (flota != null && autoOriginal.OperadorId != null) { autoOriginal.Operador.Autos.Clear(); } // autoOriginal.Operador.Auto = null; autoOriginal.Operador = null; } if (flota != null && _idNuevoOperador != 0) { if (autoOriginal.OperadorId != null) { autoOriginal.Operador.Autos.Clear(); } //autoOriginal.Operador.Auto = null; Operador operador = flota.Operadores.Where(o => o.Id == _idNuevoOperador).FirstOrDefault(); //operador.Auto = autoOriginal; operador.Autos.Add(autoOriginal); autoOriginal.Operador = operador; } #endregion autoOriginal.Patente = _patente; autoOriginal.NombreVehiculo = _nombre; autoOriginal.Patente = _patente; autoOriginal.TipoVehiculo = _tipo; autoOriginal.Marca = _marca; autoOriginal.Modelo = _modelo; autoOriginal.Year = _year; autoOriginal.KilometrajeActual = _kilometraje; _db.SaveChanges(); }
public static void CrearAuto(ProyectoAutoContext _db, string _nombre, string _patente, TipoVehiculo _tipo, string _marca, string _modelo, int _year, int _kilometraje, int _idFlota, int _idOperador = 0) { Auto nuevoAuto = new Auto(); nuevoAuto.NombreVehiculo = _nombre; nuevoAuto.Patente = _patente; nuevoAuto.TipoVehiculo = _tipo; nuevoAuto.Marca = _marca; nuevoAuto.Modelo = _modelo; nuevoAuto.Year = _year; nuevoAuto.KilometrajeActual = _kilometraje; nuevoAuto.Latitud = 0; nuevoAuto.Longitud = 0; _db.Autos.Add(nuevoAuto); if (_idFlota != 0) { Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); nuevoAuto.Flota = flota; if (_idOperador != 0) { Operador operador = flota.Operadores.Where(o => o.Id == _idOperador).FirstOrDefault(); nuevoAuto.Operador = operador; //operador.Auto = nuevoAuto; operador.Autos.Add(nuevoAuto); } } _db.SaveChanges(); }
public static void EliminarHistorialMantencion(ProyectoAutoContext _db, int _idAuto, int _idHistorialOriginal) { //editar datos proveedor //tambien considerar lo que pasa con las relaciones MantencionServicio al removerlas Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault(); HistorialMantencion histOriginal = auto.Mantenciones.Where(h => h.Id == _idHistorialOriginal).FirstOrDefault(); auto.CostoTotalMantenimiento -= histOriginal.Costo; #region Actualizar viejo y nuevo Proveedor Proveedor provAnterior = histOriginal.Proveedor; if (provAnterior != null) { provAnterior.GastoTotalMantenimiento -= histOriginal.Costo; } #endregion _db.MantencionServicios.RemoveRange(histOriginal.ServiciosAplicados); _db.HistorialesMantencion.Remove(histOriginal); _db.SaveChanges(); }
public static void ElimiarAuto(ProyectoAutoContext _db, int _idAuto) { Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault(); if (auto.OperadorId != null) { auto.Operador.Autos.Clear(); } //auto.Operador.Auto = null; _db.HistorialesCargaCombustible.RemoveRange(auto.CargasCombustible); foreach (HistorialMantencion hm in auto.Mantenciones) { _db.MantencionServicios.RemoveRange(hm.ServiciosAplicados); } _db.HistorialesMantencion.RemoveRange(auto.Mantenciones); foreach (HistorialDiario hd in auto.HistorialesDiarios) { _db.HistorialesVelocidad.RemoveRange(hd.historialesVelocidad); _db.HistorialesPosicion.RemoveRange(hd.historialesPosicion); } _db.HistorialesDiarios.RemoveRange(auto.HistorialesDiarios); _db.Autos.Remove(auto); _db.SaveChanges(); }
public static void CrearOperador(ProyectoAutoContext _db, int _idFlota, string _nombre, string _tipoLicencia, int _idUsuario, int _idAuto) { Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); Auto auto = flota.Autos.Where(a => a.Id == _idAuto).FirstOrDefault(); Usuario user = _db.Usuarios.Where(u => u.Id == _idUsuario).FirstOrDefault(); Operador nuevoOperador = new Operador(); nuevoOperador.Nombre = _nombre; nuevoOperador.TipoLicencia = _tipoLicencia; flota.Operadores.Add(nuevoOperador); _db.SaveChanges(); if (auto != null) { //nuevoOperador.Auto = auto; nuevoOperador.Autos = new List <Auto>(); nuevoOperador.Autos.Add(auto); auto.Operador = nuevoOperador; } if (user != null) { nuevoOperador.Usuario = user; user.Operador = nuevoOperador; } _db.SaveChanges(); }
public static void EliminarProveedor(ProyectoAutoContext _db, int _idFlota, int _idProveedor) { Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); Proveedor proveedor = flota.Proveedores.Where(p => p.Id == _idProveedor).FirstOrDefault(); foreach (Auto auto in flota.Autos) { foreach (HistorialMantencion hm in auto.Mantenciones) { if (hm.Proveedor == proveedor) { hm.Proveedor = null; } } foreach (HistorialCargaCombustible hcc in auto.CargasCombustible) { if (hcc.Proveedor == proveedor) { hcc.Proveedor = null; } } } _db.Proveedores.Remove(proveedor); _db.SaveChanges(); }
public static void CrearUsuario(ProyectoAutoContext _db, string _nombre, string _email, string _password, RolUsuario _rol, int _idFlota) { string passEncriptada = PasswordHash.CreateHash(_password.Trim()); Usuario nuevoUser = new Usuario() { Nombre = _nombre, Email = _email, Password = passEncriptada, Rol = _rol }; _db.Usuarios.Add(nuevoUser); int idFlota = _idFlota; if (idFlota != 0) { Flota flotaAsignar = _db.Flotas.Where(f => f.Id == idFlota).FirstOrDefault(); UsuarioFlota uf = new UsuarioFlota() { Usuario = nuevoUser, Flota = flotaAsignar }; _db.UsuarioFlotas.Add(uf); _db.SaveChanges(); flotaAsignar.UsuarioFlota = uf; nuevoUser.UsuarioFlota = uf; } _db.SaveChanges(); }
public static void EditarPasswordUsuario(ProyectoAutoContext _db, int _idUser, string _nuevaPass) { Usuario user = _db.Usuarios.Where(u => u.Id == _idUser).FirstOrDefault(); if (_nuevaPass.Trim() != "") { string passEncriptada = PasswordHash.CreateHash(_nuevaPass.Trim()); user.Password = passEncriptada; _db.SaveChanges(); } }
public static void CrearServicio(ProyectoAutoContext _db, int _idFlota, string _nombreServicio) { Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); Servicio nuevoServicio = new Servicio(); nuevoServicio.NombreServicio = _nombreServicio; flota.Servicios.Add(nuevoServicio); _db.SaveChanges(); }
public static void CrearTipoVehiculo(ProyectoAutoContext _db, int _idFlota, string _tipo) { Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); TipoVehiculo nuevoTipo = new TipoVehiculo(); nuevoTipo.Tipo = _tipo; flota.TiposVehiculo.Add(nuevoTipo); _db.SaveChanges(); }
public static void EditarFlota(ProyectoAutoContext _db, int _idOriginal, string _nombreNuevo, int _idAdminNuevo, int _idPackServicio) { Flota flotaOriginal = _db.Flotas.Where(f => f.Id == _idOriginal).FirstOrDefault(); Usuario nuevoAdmin = _db.Usuarios.Where(u => u.Id == _idAdminNuevo).FirstOrDefault(); int idAdminOriginal = 0; if (flotaOriginal.UsuarioFlotaId != null) { idAdminOriginal = flotaOriginal.UsuarioFlota.Usuario.Id; } int idPackOriginal = 0; if (flotaOriginal.PackId != null) { idPackOriginal = flotaOriginal.PackServicio.Id; } if (_idAdminNuevo != idAdminOriginal) { // Si tiene una relacion anterior Desaparece if (flotaOriginal.UsuarioFlotaId != null) { flotaOriginal.UsuarioFlota.Usuario.UsuarioFlota = null; _db.UsuarioFlotas.Remove(flotaOriginal.UsuarioFlota); } //Si se selecciono algo diferente a "Sin Asignar", hay que hacer la nueva relacion if (_idAdminNuevo != 0) { UsuarioFlota uf = new UsuarioFlota() { Usuario = nuevoAdmin, Flota = flotaOriginal }; _db.UsuarioFlotas.Add(uf); _db.SaveChanges(); nuevoAdmin.UsuarioFlota = uf; flotaOriginal.UsuarioFlota = uf; } } if (_idPackServicio != idPackOriginal) { PackServicio pack = _db.PackServicios.Where(p => p.Id == _idPackServicio).FirstOrDefault(); flotaOriginal.PackServicio = pack; } flotaOriginal.Nombre = _nombreNuevo; _db.SaveChanges(); }
public static void EditarProveedor(ProyectoAutoContext _db, int _idOriginal, string _nuevoNombre, string _nuevoTelefono, string _nuevaDireccion, string _nuevaPersonaContacto, string _nuevoTelefonoContacto, string _nuevoEmailContacto) { Proveedor proveedor = _db.Proveedores.Where(p => p.Id == _idOriginal).FirstOrDefault(); proveedor.NombreComercial = _nuevoNombre; proveedor.Telefono = _nuevoTelefono; proveedor.Direccion = _nuevaDireccion; proveedor.PersonaContacto = _nuevaPersonaContacto; proveedor.TelefonoContacto = _nuevoTelefonoContacto; proveedor.EmailContacto = _nuevoEmailContacto; _db.SaveChanges(); }
public static void EliminarTipo(ProyectoAutoContext _db, Flota _flota, TipoVehiculo _tipo) { List <Auto> autos = _flota.Autos.ToList(); foreach (Auto a in autos) { if (a.TipoVehiculo == _tipo) { a.TipoVehiculo = null; } } _db.TiposVehiculo.Remove(_tipo); _db.SaveChanges(); }
public static Flota CrearFlota(ProyectoAutoContext _db, string _nombre, int _idAdmin, string _nombrePackInicial) { Flota nuevaFlota = new Flota(); nuevaFlota.Nombre = _nombre; nuevaFlota.Servicios = new List <Servicio>(); nuevaFlota.TiposVehiculo = new List <TipoVehiculo>(); _db.Flotas.Add(nuevaFlota); if (_idAdmin != 0) { Usuario admin = _db.Usuarios.Where(u => u.Id == _idAdmin).FirstOrDefault(); UsuarioFlota uf = new UsuarioFlota() { Usuario = admin, Flota = nuevaFlota }; _db.UsuarioFlotas.Add(uf); _db.SaveChanges(); nuevaFlota.UsuarioFlota = uf; admin.UsuarioFlota = uf; } PackServicio packInicial = _db.PackServicios.Where(p => p.Nombre == _nombrePackInicial).FirstOrDefault(); nuevaFlota.PackServicio = packInicial; _db.SaveChanges(); //Creacion de datos default List <Servicio> serviciosDefault = CrearServiciosDefault(); List <TipoVehiculo> tiposVehiculoDefault = CrearTiposVehiculoDefault(); for (int i = 0; i < serviciosDefault.Count; i++) { nuevaFlota.Servicios.Add(serviciosDefault[i]); } for (int i = 0; i < tiposVehiculoDefault.Count; i++) { nuevaFlota.TiposVehiculo.Add(tiposVehiculoDefault[i]); } _db.SaveChanges(); return(nuevaFlota); }
public static void EditarHistorialMantencion(ProyectoAutoContext _db, int _idAuto, int _idHistorialOriginal, DateTime _fecha, List <Servicio> _servicios, int _kilometraje, TipoMantenimiento _tipoMantenimiento, int _costo, Proveedor _proveedor) { //editar datos proveedor //tambien considerar lo que pasa con las relaciones MantencionServicio cuando se remueven/reemplazan Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault(); HistorialMantencion histOriginal = auto.Mantenciones.Where(h => h.Id == _idHistorialOriginal).FirstOrDefault(); auto.CostoTotalMantenimiento += _costo - histOriginal.Costo; #region Actualizar viejo y nuevo Proveedor Proveedor provAnterior = histOriginal.Proveedor; Proveedor provNuevo = _proveedor; if (provAnterior != null) { provAnterior.GastoTotalMantenimiento -= histOriginal.Costo; } if (provNuevo != null) { provNuevo.GastoTotalMantenimiento += _costo; } #endregion _db.MantencionServicios.RemoveRange(histOriginal.ServiciosAplicados); for (int i = 0; i < _servicios.Count; i++) { MantencionServicio nuevoMantencionServ = new MantencionServicio(); nuevoMantencionServ.HistorialMantencion = histOriginal; nuevoMantencionServ.Servicio = _servicios[i]; histOriginal.ServiciosAplicados.Add(nuevoMantencionServ); } histOriginal.Fecha = _fecha; histOriginal.Kilometraje = _kilometraje; histOriginal.TipoDeMantenimiento = _tipoMantenimiento; histOriginal.Costo = _costo; histOriginal.Proveedor = _proveedor; _db.SaveChanges(); }
public static void EliminarUsuario(ProyectoAutoContext _db, int _idUser) { Usuario user = _db.Usuarios.Where(u => u.Id == _idUser).FirstOrDefault(); if (user.OperadorId != null) { user.Operador.Usuario = null; } if (user.UsuarioFlotaId != null) { user.UsuarioFlota.Flota.UsuarioFlota = null; _db.UsuarioFlotas.Remove(user.UsuarioFlota); _db.SaveChanges(); } _db.Usuarios.Remove(user); _db.SaveChanges(); }
public static void NuevoRegistroDeServicio(ProyectoAutoContext _db, int _idAuto, DateTime _fecha, List <Servicio> _servicios, int _kilometraje, TipoMantenimiento _tipoMantenimiento, int _costo, Proveedor _proveedor) { Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault(); auto.CostoTotalMantenimiento += _costo; if (_proveedor != null) { _proveedor.GastoTotalMantenimiento += _costo; } Operador operador = null; if (auto.OperadorId != null) { operador = auto.Operador; } HistorialMantencion nuevaMantencion = new HistorialMantencion(); nuevaMantencion.Fecha = _fecha; nuevaMantencion.Kilometraje = _kilometraje; nuevaMantencion.TipoDeMantenimiento = _tipoMantenimiento; nuevaMantencion.Costo = _costo; nuevaMantencion.Proveedor = _proveedor; nuevaMantencion.ServiciosAplicados = new List <MantencionServicio>(); nuevaMantencion.Operador = operador; for (int i = 0; i < _servicios.Count; i++) { MantencionServicio nuevoMantencionServ = new MantencionServicio(); nuevoMantencionServ.HistorialMantencion = nuevaMantencion; nuevoMantencionServ.Servicio = _servicios[i]; nuevaMantencion.ServiciosAplicados.Add(nuevoMantencionServ); } auto.Mantenciones.Add(nuevaMantencion); _db.SaveChanges(); }
public static void CrearProveedor(ProyectoAutoContext _db, int _idFlota, string _nombreComercial, string _telefono, string _direccion, string _personaContacto, string _telefonoContacto, string _emailContacto) { Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); Proveedor nuevoProveedor = new Proveedor(); nuevoProveedor.NombreComercial = _nombreComercial; nuevoProveedor.Telefono = _telefono; nuevoProveedor.Direccion = _direccion; nuevoProveedor.PersonaContacto = _personaContacto; nuevoProveedor.TelefonoContacto = _telefonoContacto; nuevoProveedor.EmailContacto = _emailContacto; nuevoProveedor.GastoTotalCombustible = 0; nuevoProveedor.GastoTotalMantenimiento = 0; flota.Proveedores.Add(nuevoProveedor); _db.SaveChanges(); }
public static void EliminarFlota(ProyectoAutoContext _db, int _idFlota) { Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); List <int> autosEliminables = new List <int>(); List <int> operadoresEliminables = new List <int>(); foreach (Auto a in flota.Autos) { autosEliminables.Add(a.Id); } foreach (int aId in autosEliminables) { Auto.ElimiarAuto(_db, aId); } foreach (Operador o in flota.Operadores) { operadoresEliminables.Add(o.Id); } foreach (int oId in operadoresEliminables) { Operador.EliminarOperador(_db, oId); } if (flota.UsuarioFlotaId != null) { flota.UsuarioFlota.Usuario.UsuarioFlota = null; _db.UsuarioFlotas.Remove(flota.UsuarioFlota); } _db.Proveedores.RemoveRange(flota.Proveedores); _db.TiposVehiculo.RemoveRange(flota.TiposVehiculo); _db.Servicios.RemoveRange(flota.Servicios); _db.Alertas.RemoveRange(flota.Alerttas); _db.Recordatorios.RemoveRange(flota.Recordatorios); _db.SaveChanges(); _db.Flotas.Remove(flota); _db.SaveChanges(); }
public static void EliminarOperador(ProyectoAutoContext _db, int _idOperador) { Operador operador = _db.Operadores.Where(o => o.Id == _idOperador).FirstOrDefault(); if (operador.Autos.Count > 0) { operador.Autos.First().Operador = null; operador.Autos.Clear(); } //if (operador.Auto != null) // operador.Auto.Operador = null; if (operador.Usuario != null) { operador.Usuario.Operador = null; } _db.Operadores.Remove(operador); _db.SaveChanges(); }
public static void EliminarServicio(ProyectoAutoContext _db, int _idFlota, int _idServicio) { Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); Servicio serv = flota.Servicios.Where(s => s.Id == _idServicio).FirstOrDefault(); List <MantencionServicio> ManSerEliminables = new List <MantencionServicio>(); foreach (Auto a in flota.Autos) { foreach (HistorialMantencion hm in a.Mantenciones) { foreach (MantencionServicio ms in hm.ServiciosAplicados) { if (ms.ServicioId == _idServicio) { ManSerEliminables.Add(ms); } } } } _db.MantencionServicios.RemoveRange(ManSerEliminables); _db.Servicios.Remove(serv); _db.SaveChanges(); }
public static void EliminarCargaCombustible(ProyectoAutoContext _db, int _idAuto, int _idCargaOriginal) { //Actualizar historial general auto, proveedor y carga siguiente Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault(); HistorialCargaCombustible cargaOriginal = auto.CargasCombustible.Where(hcc => hcc.Id == _idCargaOriginal).FirstOrDefault(); List <HistorialCargaCombustible> otrasCargas = auto.CargasCombustible.OrderBy(h => h.FechaHora).ToList(); HistorialCargaCombustible cargaAnterior = null; HistorialCargaCombustible cargaSiguiente = null; for (int i = 0; i < otrasCargas.Count; i++) { if (otrasCargas[i].Id == cargaOriginal.Id) { if ((i + 1) < otrasCargas.Count) { cargaSiguiente = otrasCargas[i + 1]; } if ((i - 1) >= 0) { cargaAnterior = otrasCargas[i - 1]; } } } auto.LitrosTotalesConsumidos = auto.LitrosTotalesConsumidos - cargaOriginal.CantidadLitros; auto.CostoTotalCombustible = auto.CostoTotalCombustible - cargaOriginal.CostoTotal; #region Actualizar proveedor if (cargaOriginal.Proveedor != null) { cargaOriginal.Proveedor.GastoTotalCombustible -= cargaOriginal.CostoTotal; } #endregion #region Actualizar Carga siguiente if (cargaSiguiente != null) { if (cargaAnterior == null) { cargaSiguiente.KilometrosRecorridos = -1; cargaSiguiente.CostoPorKilometro = -1; cargaSiguiente.Rendimiento = -1; } else { float kilometrosRecorridos = cargaSiguiente.Kilometraje - cargaAnterior.Kilometraje; float costoPorKilometro = cargaAnterior.CostoTotal / kilometrosRecorridos; float rendimiento = kilometrosRecorridos / cargaAnterior.CantidadLitros; cargaSiguiente.KilometrosRecorridos = kilometrosRecorridos; cargaSiguiente.CostoPorKilometro = costoPorKilometro; cargaSiguiente.Rendimiento = rendimiento; } } #endregion auto.CargasCombustible.Remove(cargaOriginal); _db.SaveChanges(); //Actulaizar auto luego de ser eliminado el historial #region Actualizar datos del auto if (otrasCargas.Count > 1) { int primerKilometraje = otrasCargas.First().Kilometraje; int ultimoKilometraje = otrasCargas.Last().Kilometraje; int kilometrosRecorrido = ultimoKilometraje - primerKilometraje; auto.RendimientoPromedio = kilometrosRecorrido / auto.LitrosTotalesConsumidos; //Kilometros por litro auto.CostoKilometroPromedio = auto.CostoTotalCombustible / kilometrosRecorrido; //Costo por kilometro auto.CostoLitroPromedio = auto.CostoTotalCombustible / auto.LitrosTotalesConsumidos; //Costo por litro } auto.KilometrajeActual = otrasCargas.Last().Kilometraje; #endregion _db.SaveChanges(); }
public static void EditarOperador(ProyectoAutoContext _db, int _idFlota, int _idOriginal, string _nuevoNombre, string _tipoLicencia, int _idNuevoUsuario, int _idNuevoAuto) { Flota flota = _db.Flotas.Where(f => f.Id == _idFlota).FirstOrDefault(); Operador operador = flota.Operadores.Where(o => o.Id == _idOriginal).FirstOrDefault(); operador.Nombre = _nuevoNombre; operador.TipoLicencia = _tipoLicencia; if (_idNuevoAuto == 0) { //if(operador.Auto != null) //{ // operador.Auto.Operador = null; // operador.Auto = null; //} if (operador.Autos.Count > 0) { operador.Autos.First().Operador = null; operador.Autos.Clear(); } } else { //if (operador.Auto != null) // operador.Auto.Operador = null; //Auto autoNuevo = flota.Autos.Where(a => a.Id == _idNuevoAuto).FirstOrDefault(); //operador.Auto = autoNuevo; //autoNuevo.Operador = operador; if (operador.Autos.Count > 0) { operador.Autos.First().Operador = null; operador.Autos.Clear(); } Auto autoNuevo = flota.Autos.Where(a => a.Id == _idNuevoAuto).FirstOrDefault(); operador.Autos.Add(autoNuevo); autoNuevo.Operador = operador; } if (_idNuevoUsuario == 0) { if (operador.Usuario != null) { operador.Usuario.Operador = null; operador.Usuario = null; } } else { if (operador.Usuario != null) { operador.Usuario.Operador = null; } Usuario nuevoUser = _db.Usuarios.Where(u => u.Id == _idNuevoUsuario).FirstOrDefault(); operador.Usuario = nuevoUser; nuevoUser.Operador = operador; } _db.SaveChanges(); }
public static void EditarUsuario(ProyectoAutoContext _db, int _idOriginal, string _nuevoNombre, string _nuevoEmail, RolUsuario _nuevoRol, int _nuevaFlotaId) { Usuario userOriginal = _db.Usuarios.Where(u => u.Id == _idOriginal).FirstOrDefault(); //Dependiendo del rol, primero se remueven las relaciones que se tenian como el rol anterior if (_nuevoRol == RolUsuario.Normal) { if (userOriginal.UsuarioFlotaId != null) { userOriginal.UsuarioFlota.Flota.UsuarioFlota = null; _db.UsuarioFlotas.Remove(userOriginal.UsuarioFlota); } } else if (_nuevoRol == RolUsuario.AdminDeFlota) { if (userOriginal.OperadorId != null) { userOriginal.Operador.Usuario = null; } int idFlotaOriginal = 0; if (userOriginal.UsuarioFlotaId != null) { idFlotaOriginal = userOriginal.UsuarioFlota.Flota.Id; } if (_nuevaFlotaId != idFlotaOriginal) { if (userOriginal.UsuarioFlotaId != null) { userOriginal.UsuarioFlota.Flota.UsuarioFlota = null; _db.UsuarioFlotas.Remove(userOriginal.UsuarioFlota); } if (_nuevaFlotaId != 0) { Flota flotaBuscada = _db.Flotas.Where(f => f.Id == _nuevaFlotaId).FirstOrDefault(); UsuarioFlota uf = new UsuarioFlota() { Usuario = userOriginal, Flota = flotaBuscada }; _db.UsuarioFlotas.Add(uf); _db.SaveChanges(); userOriginal.UsuarioFlota = uf; flotaBuscada.UsuarioFlota = uf; } } } else { if (userOriginal.OperadorId != null) { userOriginal.Operador.Usuario = null; } if (userOriginal.UsuarioFlotaId != null) { userOriginal.UsuarioFlota.Flota.UsuarioFlota = null; _db.UsuarioFlotas.Remove(userOriginal.UsuarioFlota); } } userOriginal.Nombre = _nuevoNombre; userOriginal.Email = _nuevoEmail; userOriginal.Rol = _nuevoRol; _db.SaveChanges(); }
public static void EditarCargaCombustible(ProyectoAutoContext _db, int _idAuto, int _idCargaOriginal, DateTime _fecha, DateTime _hora, bool _estanqueLleno, float _cantidadLitros, int _costoUnitario, int _Kilometraje, Proveedor _proveedor, string _rut, int _nBoleta) { //considerar edicion de historial general del auto y el proveedor // editar tambien kilometros recorridos, costo por kilometro, rendimiento DE ESTE Y EL SIGUIENTE HISTORIAL Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault(); HistorialCargaCombustible cargaOriginal = auto.CargasCombustible.Where(hcc => hcc.Id == _idCargaOriginal).FirstOrDefault(); List <HistorialCargaCombustible> otrasCargas = auto.CargasCombustible.OrderBy(h => h.FechaHora).ToList(); int costoTotal = Convert.ToInt32(_costoUnitario * _cantidadLitros); HistorialCargaCombustible cargaAnterior = null; HistorialCargaCombustible cargaSiguiente = null; for (int i = 0; i < otrasCargas.Count; i++) { if (otrasCargas[i].Id == cargaOriginal.Id) { if ((i + 1) < otrasCargas.Count) { cargaSiguiente = otrasCargas[i + 1]; } if ((i - 1) >= 0) { cargaAnterior = otrasCargas[i - 1]; } } } //Datos de auto que deberian cambiar de inmediato auto.LitrosTotalesConsumidos += _cantidadLitros - cargaOriginal.CantidadLitros; auto.CostoTotalCombustible += costoTotal - cargaOriginal.CostoTotal; #region Actualizar viejo y nuevo Proveedor Proveedor provAnterior = cargaOriginal.Proveedor; Proveedor provNuevo = _proveedor; if (provAnterior != null) { provAnterior.GastoTotalCombustible -= cargaOriginal.CostoTotal; } if (provNuevo != null) { provNuevo.GastoTotalCombustible += costoTotal; } #endregion #region Actualizar Datos de la carga original float kilometrosRecorridos = -1; float costoPorKilometro = -1; float rendimiento = -1; if (cargaAnterior != null) { kilometrosRecorridos = _Kilometraje - cargaAnterior.Kilometraje; costoPorKilometro = cargaAnterior.CostoTotal / kilometrosRecorridos; rendimiento = kilometrosRecorridos / cargaAnterior.CantidadLitros; } DateTime fecha = new DateTime(_fecha.Year, _fecha.Month, _fecha.Day, _hora.Hour, _hora.Minute, _hora.Second); cargaOriginal.FechaHora = fecha; cargaOriginal.EstanqueLleno = _estanqueLleno; cargaOriginal.CantidadLitros = _cantidadLitros; cargaOriginal.CostoUnitario = _costoUnitario; cargaOriginal.Kilometraje = _Kilometraje; cargaOriginal.CostoTotal = costoTotal; cargaOriginal.Proveedor = _proveedor; cargaOriginal.RutEstacion = _rut; cargaOriginal.NumeroDeBoleta = _nBoleta; cargaOriginal.KilometrosRecorridos = kilometrosRecorridos; cargaOriginal.CostoPorKilometro = costoPorKilometro; cargaOriginal.Rendimiento = rendimiento; _db.SaveChanges(); #endregion #region Actualizar Datos de la siguiente carga if (cargaSiguiente != null) { kilometrosRecorridos = cargaSiguiente.Kilometraje - cargaOriginal.Kilometraje; costoPorKilometro = cargaOriginal.CostoTotal / kilometrosRecorridos; rendimiento = kilometrosRecorridos / cargaOriginal.CantidadLitros; cargaSiguiente.KilometrosRecorridos = kilometrosRecorridos; cargaSiguiente.CostoPorKilometro = costoPorKilometro; cargaSiguiente.Rendimiento = rendimiento; } #endregion //datos del auto se actualizan al final cuando los hitoriales ya se regulan #region Actualizar datos del auto if (otrasCargas.Count > 1) { int primerKilometraje = otrasCargas.First().Kilometraje; int ultimoKilometraje = otrasCargas.Last().Kilometraje; int kilometrosRecorrido = ultimoKilometraje - primerKilometraje; auto.RendimientoPromedio = kilometrosRecorrido / auto.LitrosTotalesConsumidos; //Kilometros por litro auto.CostoKilometroPromedio = auto.CostoTotalCombustible / kilometrosRecorrido; //Costo por kilometro auto.CostoLitroPromedio = auto.CostoTotalCombustible / auto.LitrosTotalesConsumidos; //Costo por litro } auto.KilometrajeActual = otrasCargas.Last().Kilometraje; #endregion _db.SaveChanges(); }
} //Kilometros por litro public static void NuevaCargaCombustible(ProyectoAutoContext _db, int _idAuto, DateTime _fecha, DateTime _hora, bool _estanqueLleno, float _cantidadLitros, int _costoUnitario, int _Kilometraje, Proveedor _proveedor, string _rut, int _nBoleta) { Auto auto = _db.Autos.Where(a => a.Id == _idAuto).FirstOrDefault(); List <HistorialCargaCombustible> otrasCargas = auto.CargasCombustible.OrderBy(h => h.FechaHora).ToList(); int costoTotal = Convert.ToInt32(_costoUnitario * _cantidadLitros); #region Actualizar datos del auto if (otrasCargas.Count > 0) { int primerKilometraje = otrasCargas.First().Kilometraje; int ultimoKilometraje = _Kilometraje; int kilometrosRecorrido = ultimoKilometraje - primerKilometraje; auto.RendimientoPromedio = kilometrosRecorrido / auto.LitrosTotalesConsumidos; //Kilometros por litro auto.CostoKilometroPromedio = auto.CostoTotalCombustible / kilometrosRecorrido; //Costo por kilometro auto.CostoLitroPromedio = auto.CostoTotalCombustible / auto.LitrosTotalesConsumidos; //Costo por litro } auto.KilometrajeActual = _Kilometraje; auto.LitrosTotalesConsumidos += _cantidadLitros; auto.CostoTotalCombustible += costoTotal; #endregion #region Actualizar Proveedor if (_proveedor != null) { _proveedor.GastoTotalCombustible += costoTotal; } #endregion float kilometrosRecorridos = -1; float costoPorKilometro = -1; float rendimiento = -1; Operador operador = null; if (auto.OperadorId != null) { operador = auto.Operador; } if (otrasCargas.Count > 0) { HistorialCargaCombustible ultimaCarga = otrasCargas.Last(); kilometrosRecorridos = _Kilometraje - ultimaCarga.Kilometraje; costoPorKilometro = ultimaCarga.CostoTotal / kilometrosRecorridos; rendimiento = kilometrosRecorridos / ultimaCarga.CantidadLitros; } DateTime fecha = new DateTime(_fecha.Year, _fecha.Month, _fecha.Day, _hora.Hour, _hora.Minute, _hora.Second); HistorialCargaCombustible nuevaCarga = new HistorialCargaCombustible(); nuevaCarga.FechaHora = fecha; nuevaCarga.EstanqueLleno = _estanqueLleno; nuevaCarga.CantidadLitros = _cantidadLitros; nuevaCarga.CostoUnitario = _costoUnitario; nuevaCarga.Kilometraje = _Kilometraje; nuevaCarga.CostoTotal = costoTotal; nuevaCarga.Proveedor = _proveedor; nuevaCarga.Operador = operador; nuevaCarga.RutEstacion = _rut; nuevaCarga.NumeroDeBoleta = _nBoleta; nuevaCarga.KilometrosRecorridos = kilometrosRecorridos; nuevaCarga.CostoPorKilometro = costoPorKilometro; nuevaCarga.Rendimiento = rendimiento; auto.CargasCombustible.Add(nuevaCarga); _db.SaveChanges(); }