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); }
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); }
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"); }
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()); } }