Beispiel #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);
            }
        }
Beispiel #2
0
        public void UpdatePassword(Usuario usuario, bool expired = false)
        {
            try
            {
                var userDb = _crudUsuario.RetrieveAuth <Usuario>(usuario);
                if (userDb == null)
                {
                    throw new BusinessException(204);
                }

                var mngConfig = new ConfiguracionManager();
                var config    = mngConfig.RetrieveConfiguracion();

                // Validate password length
                if (usuario.Password.Length < config.CantCaracteresContrasena)
                {
                    throw new BusinessException(206);
                }

                usuario.PasswordSalt    = userDb.PasswordSalt;
                usuario.PasswordHash    = GenerateHash(usuario.Password, usuario.PasswordSalt);
                usuario.PasswordLastSet = DateTime.Now;

                // Validate password has not been used before.
                var newPassword = new HistorialContrasena
                {
                    Fecha        = usuario.PasswordLastSet,
                    Email        = usuario.Email,
                    PasswordHash = usuario.PasswordHash,
                    Count        = config.CantContrasenasAnteriores
                };

                var historial = _crudContrasena.Retrieve <HistorialContrasena>(newPassword);

                if (historial != null)
                {
                    throw new BusinessException(205);
                }

                _crudUsuario.UpdatePassword(usuario);

                // Record password has in history
                _crudContrasena.Create(newPassword);

                //Clean up password history
                _crudContrasena.Delete(newPassword);
            }
            catch (Exception e)
            {
                ExceptionManager.GetInstance().Process(e);
            }
        }
Beispiel #3
0
        public void Create(int empresaId)
        {
            try
            {
                var pagosResalizados = ObtenerPagosPorEmpresa(empresaId);
                var pagoCreado       = false;

                pagosResalizados.ForEach(p =>
                {
                    var mes = DateTime.Parse(p.Fecha);
                    var now = DateTime.Now;

                    if (mes.Month == now.Month)
                    {
                        pagoCreado = true;
                    }
                });

                if (pagoCreado)
                {
                    return;
                }

                var lineaManager          = new LineaManager();
                var configuracionTerminal = new ConfiguracionManager();
                var lineas = lineaManager.GetAllLines(0, empresaId);
                var pagos  = new List <PagoPendiente>();
                lineas.ForEach(l =>
                {
                    var termialConfig = configuracionTerminal.RetrieveConfiguracionTerminal(l.Terminal.Id);
                    pagos.Add(new PagoPendiente
                    {
                        LineaId   = l.LineaId,
                        EmpresaId = l.Empresa.CedulaJuridica,
                        Monto     = Convert.ToInt32(l.EspaciosParqueo * termialConfig.CostoParqueoBusMes)
                    });
                });

                pagos.ForEach(p => _crudFactory.Create(p));
            }
            catch (Exception e)
            {
                ExceptionManager.GetInstance().Process(e);
            }
        }
Beispiel #4
0
        public Usuario ValidateUser(Usuario usuario)
        {
            Usuario usuarioDb = null;

            try
            {
                usuarioDb = _crudUsuario.RetrieveAuth <Usuario>(usuario);

                if (usuarioDb == null) // Does not exist
                {
                    throw new BusinessException(208);
                }

                if (!usuarioDb.Estado.Equals("Activo")) // Not Active
                {
                    throw new BusinessException(211);
                }

                var mngConfig = new ConfiguracionManager();
                var config    = mngConfig.RetrieveConfiguracion();

                if (usuarioDb.PasswordLastSet.AddDays(config.DiasExpiracionContrasena) < DateTime.Today)
                {
                    throw new BusinessException(209); //Expired password
                }
                usuario.PasswordHash = GenerateHash(usuario.Password, usuarioDb.PasswordSalt);

                if (!usuario.PasswordHash.Equals(usuarioDb.PasswordHash)) // Wrong password
                {
                    throw new BusinessException(208);
                }

                // clean the object
                usuarioDb.PasswordHash = null;
                usuarioDb.PasswordSalt = null;
                usuarioDb.ResetToken   = null;
            }
            catch (Exception e)
            {
                ExceptionManager.GetInstance().Process(e);
            }

            return(usuarioDb); // Ok
        }
Beispiel #5
0
        public void Create(Terminal terminal)
        {
            try
            {
                var t = _crudTerminal.RetrieveByName <Terminal>(terminal);

                if (t != null)
                {
                    //Terminal ya existe
                    throw new BusinessException(100);
                }

                _crudTerminal.Create(terminal);

                t = _crudTerminal.RetrieveByName <Terminal>(terminal);
                var configManager = new ConfiguracionManager();
                configManager.CreateConfiguracionTerminal(t.Id);
            }
            catch (Exception ex)
            {
                ExceptionManager.GetInstance().Process(ex);
            }
        }
Beispiel #6
0
        public void Create(Tarjeta card)
        {
            try
            {
                var getCarsd = GeTarjetaByUniquecode(card.CodigoUnico);

                if (getCarsd != null)
                {
                    throw new BusinessException(300);
                }

                var config = new ConfiguracionManager();
                card.EstadoTarjeta = new EstadoTarjeta {
                    EstadoTarjetaId = 1
                };
                var terminalConfig = config.RetrieveConfiguracionTerminal(card.Terminal.Id);
                card.SaldoDisponible = Convert.ToInt32(terminalConfig.MontoInicialTarjeta);
                var transactionManager = new TransactionManager();

                _crudFactory.Create(card);

                transactionManager.CreateFirstTransaction(new Transaccion
                {
                    CardUniqueCode = card.CodigoUnico,
                    Charge         = Convert.ToInt32(card.SaldoDisponible),
                    Description    = "Monto Inicial " + card.NombreTarjeta,
                    Type           = "Venta Tarjeta",
                    Status         = "Activo",
                    Terminal       = card.Terminal
                });
            }
            catch (Exception e)
            {
                ExceptionManager.GetInstance().Process(e);
            }
        }
Beispiel #7
0
        public Usuario Retrieve(Usuario usuario)
        {
            Usuario usuarioDb = null;

            try
            {
                usuarioDb = _crudUsuario.Retrieve <Usuario>(usuario);

                if (usuarioDb == null)
                {
                    throw new BusinessException(204);
                }

                var mngConfig = new ConfiguracionManager();
                var config    = mngConfig.RetrieveConfiguracion();
                usuarioDb.PasswordExpiration = usuarioDb.PasswordLastSet.AddDays(config.DiasExpiracionContrasena);
            }
            catch (Exception e)
            {
                ExceptionManager.GetInstance().Process(e);
            }

            return(usuarioDb);
        }
Beispiel #8
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);
            }
        }