Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }