Esempio n. 1
0
        private void EnviaMensaje(Coche coche, Mensaje mensaje, TicketRechazo rechazo, Empleado empleado)
        {
            if (coche == null || mensaje == null)
            {
                return;
            }

            var lastPosition = DaoFactory.LogPosicionDAO.GetLastOnlineVehiclePosition(coche);

            var newEvent = new LogMensaje
            {
                Coche         = coche,
                Chofer        = empleado,
                CodigoMensaje = mensaje.Codigo,
                Dispositivo   = coche.Dispositivo,
                Expiracion    = DateTime.UtcNow.AddDays(1),
                Fecha         = DateTime.UtcNow,
                FechaAlta     = DateTime.UtcNow,
                FechaFin      = DateTime.UtcNow,
                IdCoche       = coche.Id,
                Latitud       = lastPosition != null ? lastPosition.Latitud : 0,
                LatitudFin    = lastPosition != null ? lastPosition.Latitud : 0,
                Longitud      = lastPosition != null ? lastPosition.Longitud : 0,
                LongitudFin   = lastPosition != null ? lastPosition.Longitud : 0,
                Mensaje       = mensaje,
                Texto         =
                    "INFORME DE RECHAZO NRO " + rechazo.Id + ": " + mensaje.Descripcion + " -> " +
                    rechazo.Entrega.Descripcion
            };

            DaoFactory.LogMensajeDAO.Save(newEvent);
        }
Esempio n. 2
0
        public override TicketRechazoDetalleModel EntityToModel(DetalleTicketRechazo entity,
                                                                TicketRechazoDetalleModel model)
        {
            model.TicketRechazoDetalleId = entity.Id;
            model.FechaHora    = DateTime.SpecifyKind(entity.FechaHora, DateTimeKind.Utc);
            model.EmpleadoDesc = entity.Empleado.Entidad.Descripcion;
            model.Observacion  = entity.Observacion;
            model.Estado       = CultureManager.GetLabel(TicketRechazo.GetEstadoLabelVariableName(entity.Estado));

            return(model);
        }
Esempio n. 3
0
        protected override void OnExecute(Timer timer)
        {
            STrace.Trace(ComponentName, "Inicio de la tarea");

            var empresas = DaoFactory.EmpresaDAO.GetList();

            foreach (var empresa in empresas.Where(empresa => empresa.MonitoreoRechazos))
            {
                STrace.Trace(ComponentName, string.Format("Monitoreo Rechazos habilitado para: {0}", empresa.RazonSocial));

                var activos = DaoFactory.TicketRechazoDAO.GetActivos(empresa.Id);

                STrace.Trace(ComponentName, string.Format("Activos: {0}", activos.Count()));

                foreach (var rechazo in activos)
                {
                    var tiempo = DateTime.UtcNow.Subtract(rechazo.FechaHoraEstado).TotalMinutes;
                    switch (rechazo.UltimoEstado)
                    {
                    case TicketRechazo.Estado.Notificado1:
                        STrace.Trace(ComponentName, string.Format("Último estado: Notificado 1 - Minutos: {0}", tiempo));

                        if (tiempo > 15 && rechazo.SupervisorVenta != null)
                        {
                            rechazo.ChangeEstado(TicketRechazo.Estado.Notificado2, "Informe a Supervisor de Ventas", rechazo.SupervisorVenta);
                            DaoFactory.TicketRechazoDAO.SaveOrUpdate(rechazo);

                            var coche = DaoFactory.CocheDAO.FindByChofer(rechazo.SupervisorVenta.Id);
                            if (coche != null)
                            {
                                var mensajeVo = DaoFactory.MensajeDAO.GetByCodigo(TicketRechazo.GetCodigoMotivo(rechazo.Motivo), coche.Empresa, coche.Linea);
                                var mensaje   = DaoFactory.MensajeDAO.FindById(mensajeVo.Id);
                                EnviaMensaje(coche, mensaje, rechazo, rechazo.SupervisorVenta);
                            }
                        }
                        break;

                    case TicketRechazo.Estado.Notificado2:
                        STrace.Trace(ComponentName, string.Format("Último estado: Notificado 2 - Minutos: {0}", tiempo));

                        if (tiempo > 15 && rechazo.SupervisorRuta != null)
                        {
                            rechazo.ChangeEstado(TicketRechazo.Estado.Notificado3, "Informe a Jefe de Ventas", rechazo.SupervisorRuta);
                            DaoFactory.TicketRechazoDAO.SaveOrUpdate(rechazo);

                            var coche = DaoFactory.CocheDAO.FindByChofer(rechazo.SupervisorRuta.Id);
                            if (coche != null)
                            {
                                var mensajeVo = DaoFactory.MensajeDAO.GetByCodigo(TicketRechazo.GetCodigoMotivo(rechazo.Motivo), coche.Empresa, coche.Linea);
                                var mensaje   = DaoFactory.MensajeDAO.FindById(mensajeVo.Id);
                                EnviaMensaje(coche, mensaje, rechazo, rechazo.SupervisorRuta);
                            }
                        }
                        break;

                    case TicketRechazo.Estado.Notificado3:
                        STrace.Trace(ComponentName, string.Format("Último estado: Notificado 3 - Horas: {0}", tiempo / 60));

                        if (tiempo > 360 && rechazo.SupervisorRuta != null)
                        {
                            rechazo.ChangeEstado(TicketRechazo.Estado.NoResuelta, "Rechazo no resuelto", rechazo.SupervisorRuta);
                            DaoFactory.TicketRechazoDAO.SaveOrUpdate(rechazo);
                        }
                        break;
                    }
                }
            }

            STrace.Trace(ComponentName, "Fin de la tarea");
        }
Esempio n. 4
0
        public IHttpActionResult Get(int id)
        {
            try
            {
                var deviceId = GetDeviceId(Request);
                if (deviceId == null)
                {
                    return(BadRequest());
                }

                List <Rechazo> retorno = new List <Rechazo>();

                var device                = new DispositivoDAO().FindByImei(deviceId.ToString());
                var empleado              = new EmpleadoDAO().FindEmpleadoByDevice(device);
                TicketRechazoDAO dao      = new TicketRechazoDAO();
                var desde                 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
                var hasta                 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
                var activos               = dao.GetByEmpleadoAndFecha(empleado, desde, hasta).AsQueryable();
                List <TicketRechazo> list = activos.Where(x => !x.UltimoEstado.Equals(TicketRechazo.Estado.Resuelto) &&
                                                          x.Id > id).ToList();

                foreach (TicketRechazo item in list)
                {
                    TicketRechazo.Estado[] estados      = TicketRechazo.Next(item.UltimoEstado);
                    List <Estado>          estadosmodel = new List <Estado>();

                    foreach (var itemEstado in item.Detalle)
                    {
                        string transportista = "";
                        if (item.Transportista != null)
                        {
                            transportista = item.Transportista.Descripcion.ToString();
                        }
                        estadosmodel.Add(new Estado()
                        {
                            id            = (int)itemEstado.Id,
                            fechahora     = itemEstado.FechaHora,
                            empleado      = itemEstado.Empleado.Entidad.Descripcion.ToString(),
                            estado        = itemEstado.Estado.ToString(),
                            observacion   = itemEstado.Observacion,
                            transportista = transportista,
                            enhorario     = item.EnHorario.ToString(),
                            cliente       = item.Cliente.ToString(),
                        });
                    }
                    retorno.Add(
                        new Rechazo()
                    {
                        id            = item.Id,
                        fechahora     = item.FechaHora,
                        motivo        = item.Motivo.ToString(),
                        estado        = item.UltimoEstado.ToString(),
                        bultos        = item.Bultos.ToString(),
                        codentrega    = item.Entrega.Codigo,
                        nombre        = item.Entrega.Descripcion,
                        vendedor      = item.Vendedor.Entidad.Descripcion.ToString(),
                        supventa      = item.SupervisorVenta.Entidad.Descripcion.ToString(),
                        supruta       = item.SupervisorRuta.Entidad.Descripcion.ToString(),
                        territorio    = item.Territorio,
                        estados       = estadosmodel.ToArray(),
                        usuariomobile = empleado.Entidad.Descripcion
                    });
                }
                return(Ok(retorno.ToArray()));
            }
            catch (Exception error)
            {
                LogicTracker.App.Web.Api.Providers.LogWritter.writeLog(error);
                return(BadRequest());
            }
        }