public void Create(Queja queja) { try { _crudQueja.Create(queja); var configManager = new ConfiguracionManager(); var empresaManager = new EmpresaManager(); var sancionManager = new SancionManager(); var rutaManager = new RutaManager(); var ruta = new Ruta(); var empresa = new Empresa(); var configuracionTerminal = new ConfiguracionTerminal(); //Obtengo la empresa a la que se le agregó la queja ruta.Id = queja.Ruta; empresa = empresaManager.RetrieveEmpresaByRuta(ruta); //Obtengo el Id de la terminal ruta = rutaManager.Retrieve(ruta); var terminalId = ruta.TerminalId; //Obtengo la configuración de terminal configuracionTerminal = configManager.RetrieveConfiguracionTerminal(terminalId); //Obtengo la cantidad de quejas para una sanción var cantidadSancion = configuracionTerminal.CantidadQuejasSancion; //Obtengo la cantidad de quejas hechas a una ruta var cantidadQuejas = _crudQueja.RetriveQuejasActivasByRutaStatement <Queja>(queja.Ruta).Count; //Valido si hay quejas suficientes para una sanción if (cantidadSancion <= cantidadQuejas) { var sancion = new Sancion(); sancion.Descripcion = "Sanción generada automaticamente por el sistema"; sancion.Multa = 3000; sancion.Estado = "Activo"; sancion.TerminalId = ruta.TerminalId; sancion.Fecha = DateTime.Now; sancion.Suspencion = "Activo"; sancion.FechaReactivacion = DateTime.Now.AddDays(7); sancion.Empresa = empresa.CedulaJuridica; sancionManager.Create(sancion); } } catch (Exception ex) { ExceptionManager.GetInstance().Process(ex); } }
public void RegistrarSalida(Recorrido recorrido) { try { var recorridoDb = _crudRecorrido.Retrieve <Recorrido>(recorrido); if (recorridoDb == null) //No existe { throw new BusinessException(217); } if (ListaRecorridosActuales.FirstOrDefault(r => r.RecorridoId == recorridoDb.RecorridoId) != null || recorridoDb.HoraSalida != DateTime.MinValue) //Ya salio { throw new BusinessException(220); } recorridoDb.HoraSalida = DateTime.Now; var ruta = _crudRuta.Retrieve <Ruta>(new Ruta { Id = recorridoDb.RutaId }); var terminal = _crudTerminal.Retrieve <Terminal>(new Terminal { Id = ruta.TerminalId }); var time = DateTime.Now.TimeOfDay; var tardia = time - recorridoDb.Horario; var configManager = new ConfiguracionManager(); var configuracionTerminal = configManager.RetrieveConfiguracionTerminal(ruta.TerminalId); if (tardia.Minutes > configuracionTerminal.CantidadMinutosTardia) // More than 15 minutes late. { recorridoDb.MinutosTarde = tardia.Minutes; if (_crudRecorrido.RetrieveTardias <Recorrido>().Count >= configuracionTerminal.CantidadTardiasSancion) { var sancionManager = new SancionManager(); var linea = _crudLinea.Retrieve <Linea>(new Linea { LineaId = ruta.LineaId }); var sancion = new Sancion { Descripcion = "Sanción por mas de " + configuracionTerminal.CantidadTardiasSancion + " tardias en el mes.", Multa = 5000, Estado = "Activo", TerminalId = ruta.TerminalId, Fecha = DateTime.Now, Suspencion = "Inactivo", FechaReactivacion = DateTime.Now.AddDays(20), Empresa = linea.Empresa.CedulaJuridica }; sancionManager.Create(sancion); } } _crudRecorrido.UpdateSalida(recorridoDb); recorridoDb.Posicion = new Posicion { RecorridoId = recorridoDb.RecorridoId, Latitude = terminal.Latitude, Longitude = terminal.Longitude, TimeStamp = DateTime.Now }; ListaRecorridosActuales.Add(recorridoDb); } catch (Exception e) { ExceptionManager.GetInstance().Process(e); } }