Exemple #1
0
        private STrayecto creaAgencias(SEATrayecto trayecto)
        {
            BLAgencia            blAgencia          = new BLAgencia();
            List <SPuntoControl> ListaPuntosControl = new List <SPuntoControl>();

            trayecto.ListaPuntosControlAgencia.ForEach(x =>
            {
                if (x.Agencia != null)
                {
                    if (x.IdAgencia == null)
                    {
                        x.Agencia   = blAgencia.addAgencia(x.Agencia);
                        x.IdAgencia = x.Agencia.Id;
                    }
                    else
                    {
                        blAgencia.updateAgencia(x.Agencia);
                    }
                }
                ListaPuntosControl.Add(x);
            });
            STrayecto t = trayecto;

            t.ListaPuntosControl = ListaPuntosControl;
            return(t);
        }
Exemple #2
0
        public Trayecto entidadAModelo(STrayecto t, Trayecto tr)
        {
            tr.nombre  = t.Nombre;
            tr.version = t.Version;
            tr.borrado = t.Borrado;

            return(tr);
        }
Exemple #3
0
 public int paquetesTransito(STrayecto a)
 {
     try
     {
         return(_dal.paquetesTransito((int)a.Id));
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemple #4
0
 public STrayecto updateTrayecto(STrayecto a)
 {
     try
     {
         return(_dal.updateTrayecto(a));
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemple #5
0
 public STrayecto addTrayecto(STrayecto a)
 {
     try
     {
         //a.validation(); //falta comprobar que no esten duplicadas las agencias y eso, y probablemente mas cosas tambien xD
         return(_dal.addTrayecto(a));
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemple #6
0
 public IHttpActionResult addTrayecto(STrayecto a)
 {
     try
     {
         BLTrayecto bl = new BLTrayecto();
         return(Ok(bl.addTrayecto(a)));
     }
     catch (Exception e)
     {
         return(Content(HttpStatusCode.InternalServerError, e.Message));
     }
 }
Exemple #7
0
        public STrayecto updateTrayecto(STrayecto a)
        {
            using (trackingFULLEntities en = new trackingFULLEntities())
            {
                try
                {
                    List <string> ids = new List <string>();
                    foreach (SEAPuntoControlAgencia p in a.ListaPuntosControl)
                    {
                        if (p.Id != null)
                        {
                            ids.Add(((int)p.Id).ToString());
                        }
                    }
                    String query = "Select * from PuntoControl WHERE PuntoControl.borrado = 0 and PuntoControl.idTrayecto = " + a.Id;
                    if (ids.Count > 0)
                    {
                        query += " and id NOT IN(" + string.Join(", ", ids) + ")";
                    }
                    en.Database.SqlQuery <SPuntoControl>(query).ToList().ForEach(x =>
                    {
                        x.Borrado = true;
                        en.SaveChanges();
                    });

                    Trayecto ag = en.Trayecto.Find(a.Id);
                    ag = _conv.entidadAModelo(a, ag);
                    DALPuntoControl dalp = new DALPuntoControl();
                    if (a.ListaPuntosControl != null)
                    {
                        a.ListaPuntosControl.ToList().ForEach(x =>
                        {
                            x.IdTrayecto = ag.id;
                            if (x.Id > 0)
                            {
                                dalp.updatePuntoControl(x);
                            }
                            else
                            {
                                dalp.addPuntoControl(x);
                            }
                        });
                    }
                    en.SaveChanges();
                    return(_conv.modeloAEntidad(ag));
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
Exemple #8
0
        public Trayecto entidadAModelo(STrayecto t)
        {
            Trayecto trayecto = new Trayecto()
            {
                nombre  = t.Nombre,
                version = t.Version,
                borrado = t.Borrado
            };

            if (t.Id != null)
            {
                trayecto.id = (int)t.Id;
            }
            return(trayecto);
        }
Exemple #9
0
 public IHttpActionResult updateTrayecto(STrayecto a)
 {
     try
     {
         BLTrayecto bl = new BLTrayecto();
         if (!bl.paquetesEnTransito((int)a.Id))
         {
             return(Ok(bl.updateTrayecto(a)));
         }
         throw new ECompartida("Hay paquetes en transito en este trayecto actualmente");
     }
     catch (Exception e)
     {
         return(Content(HttpStatusCode.InternalServerError, e.Message));
     }
 }
Exemple #10
0
 public STrayecto addTrayecto(STrayecto a)
 {
     using (trackingFULLEntities en = new trackingFULLEntities())
     {
         try
         {
             Trayecto ag = en.Trayecto.Add(_conv.entidadAModelo(a));
             if (a.ListaPuntosControl != null)
             {
                 a.ListaPuntosControl.ForEach(x =>
                 {
                     ag.PuntoControl.Add(_conv.entidadAModelo(x));
                 });
             }
             else
             {
                 ag.PuntoControl.Add(new PuntoControl()
                 {
                     nombre = "Recibido en origen", orden = 1, tiempo = 0, borrado = false
                 });
                 ag.PuntoControl.Add(new PuntoControl()
                 {
                     nombre = "Esperando en origen", orden = 2, tiempo = 0, borrado = false
                 });
                 ag.PuntoControl.Add(new PuntoControl()
                 {
                     nombre = "En viaje", orden = 3, tiempo = 0, borrado = false
                 });
                 ag.PuntoControl.Add(new PuntoControl()
                 {
                     nombre = "Recibido en destino", orden = 4, tiempo = 0, borrado = false
                 });
                 ag.PuntoControl.Add(new PuntoControl()
                 {
                     nombre = "Entregado al cliente", orden = 5, tiempo = 0, borrado = false
                 });
             }
             en.SaveChanges();
             return(_conv.modeloAEntidad(ag));
         }
         catch (Exception e)
         {
             throw;
         }
     }
 }
Exemple #11
0
 public dynamic detallesPaquete(string email, string role, int idPaquete)
 {
     try
     {
         SPaquete  paquete   = this.getPaquete(idPaquete);
         BLCliente blCliente = new BLCliente();
         if (role != "Admin")
         {
             SCliente cliente = blCliente.getClienteByEmail(email);
             if (cliente != null)
             {
                 if (cliente.Id != paquete.IdDestinatario && cliente.Id != paquete.IdRemitente)
                 {
                     throw new ECompartida("No tienes acceso a la informacion de este paquete");
                 }
             }
             else
             {
                 throw new ECompartida("El email enviado en la solicitud no pertenece a un cliente del sistema");
             }
         }
         SCliente       Remitente      = blCliente.getCliente((int)paquete.IdRemitente);
         SCliente       Destinatario   = blCliente.getCliente((int)paquete.IdDestinatario);
         BLTrayecto     bLTrayecto     = new BLTrayecto();
         STrayecto      Trayecto       = bLTrayecto.getTrayecto((int)paquete.IdTrayecto);
         BLPuntoControl bLPuntoControl = new BLPuntoControl();
         Trayecto.ListaPuntosControl = bLPuntoControl.puntosControlDeUnTrayecto((int)paquete.IdTrayecto);
         BLPaquetePuntoControl       bLPaquetePuntoControl = new BLPaquetePuntoControl();
         List <SPaquetePuntoControl> PaquetePuntosControl  = bLPaquetePuntoControl.puntosControlDeUnPaquete((int)paquete.Id);
         dynamic respuesta = new ExpandoObject();
         respuesta.IdTrayecto          = paquete.Id;
         respuesta.Qr                  = paquete.Codigo;
         respuesta.Trayecto            = Trayecto;
         respuesta.Remitente           = Remitente;
         respuesta.Destinatario        = Destinatario;
         respuesta.PaquetePuntoControl = PaquetePuntosControl;
         return(respuesta);
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemple #12
0
        //TRAYECTO

        public STrayecto modeloAEntidad(Trayecto t)
        {
            if (t == null)
            {
                return(null);
            }
            STrayecto trayecto = new STrayecto()
            {
                Id                 = t.id,
                Nombre             = t.nombre,
                Version            = (int)t.version,
                Borrado            = (bool)t.borrado,
                ListaPuntosControl = new List <SPuntoControl>()
            };

            t.PuntoControl.ToList().ForEach(x =>
            {
                if (x.borrado == false || x.borrado == null)
                {
                    trayecto.ListaPuntosControl.Add(modeloAEntidad(x));
                }
            });
            return(trayecto);
        }
Exemple #13
0
        public IHttpActionResult Authenticate(SAEData d)
        {
            try
            {
                SUsuario    usuario        = d.usuario;
                SEATrayecto trayecto       = d.trayecto;
                STrayecto   ActualTrayecto = null;

                SAEPaquete p = d.paquete;

                BLCliente bl        = new BLCliente();
                BLUsuario blusuario = new BLUsuario();
                SUsuario  oUsuario  = blusuario.login(usuario);
                BLPaquete blPaquete = new BLPaquete();

                if (usuario == null)
                {
                    return(Content(HttpStatusCode.Unauthorized, "El usuario no existe"));
                }
                else if (oUsuario.Rol != "Admin" && oUsuario.Rol != "Funcionario" && oUsuario.Rol != "Encargado")
                {
                    return(Content(HttpStatusCode.Unauthorized, "El usuario no esta autorisado para usar elte servicio"));
                }

                if (p.adelanta != null)
                {
                    if (p.Id == null)
                    {
                        return(Content(HttpStatusCode.Unauthorized, "Error en paquete, se intento adelantar pero no se recibio el identificador"));
                    }
                    else
                    {
                        return(Ok(blPaquete.avanzar(new SPaquetePuntoControl()
                        {
                            IdPaquete = (int)p.Id, IdEmpleado = oUsuario.Id
                        })));
                    }
                }
                if (p.atrasa != null)
                {
                    if (p.Id == null)
                    {
                        return(Content(HttpStatusCode.Unauthorized, "Error en paquete, se intento retroceder pero no se recibio el identificador"));
                    }
                    else
                    {
                        return(Ok(blPaquete.retroceder(new SPaquetePuntoControl()
                        {
                            IdPaquete = (int)p.Id, IdEmpleado = oUsuario.Id
                        })));
                    }
                }
                if (p.entrega != null)
                {
                    if (p.Id == null)
                    {
                        return(Content(HttpStatusCode.Unauthorized, "Error en paquete, se intento entregar pero no se recibio el identificador"));
                    }
                    else if (p.code == null)
                    {
                        return(Content(HttpStatusCode.Unauthorized, "Error en paquete, se intento entregar pero no se recibio el codigo"));
                    }
                    else
                    {
                        return(Ok(blPaquete.entregaCliente(new SPaquetePuntoControl()
                        {
                            IdEmpleado = oUsuario.Id,
                            IdPaquete = (int)p.Id
                        }, p.code)));
                    }
                }


                STrayecto t = trayecto;
                if ((p.IdDestinatario == p.IdRemitente && p.IdRemitente != null) ||
                    (p.Remitente != null && p.Destinatario != null && p.Destinatario.NumeroDocumento == p.Remitente.NumeroDocumento))
                {
                    return(Content(HttpStatusCode.NotFound, "Error en el paquete, el destinatario no puede ser el remitente"));
                }
                string sMsg = p.validacion();
                if (sMsg != "")
                {
                    return(Content(HttpStatusCode.NotFound, sMsg));
                }
                else
                {
                    SCliente cActualDestinatario = null;
                    SCliente cActualRemitente    = null;
                    if (p.IdDestinatario != null)
                    {
                        cActualDestinatario = bl.getCliente((int)p.IdDestinatario);
                    }
                    else
                    {
                        bl.validacion(p.Destinatario);
                    }
                    if (p.IdRemitente != null)
                    {
                        cActualRemitente = bl.getCliente((int)p.IdRemitente);
                    }
                    else
                    {
                        bl.validacion(p.Remitente);
                    }


                    if (cActualDestinatario == null && p.Destinatario == null)
                    {
                        return(Content(HttpStatusCode.NotFound, "Error en el paquete, el destinatario no existe en el sistema"));
                    }
                    if (cActualRemitente == null && p.Remitente == null)
                    {
                        return(Content(HttpStatusCode.NotFound, "Error en el paquete, el remitente no existe en el sistema"));
                    }

                    if (p.IdTrayecto != null && p.IdTrayecto != t.Id)
                    {
                        return(Content(HttpStatusCode.NotFound, "Error en el paquete, no pertenece al trayecto enviado"));
                    }
                    else if (trayecto == null && d.IdTrayecto == null)
                    {
                        return(Content(HttpStatusCode.NotFound, "Error en el trayecto, faltan los datos"));
                    }
                    else if (d.IdTrayecto != null)
                    {
                        BLTrayecto blTrayecto = new BLTrayecto();
                        ActualTrayecto = blTrayecto.getTrayecto((int)d.IdTrayecto);
                        if (ActualTrayecto == null)
                        {
                            return(Content(HttpStatusCode.NotFound, "El trayecto no existe."));
                        }
                    }
                    else if (trayecto != null)
                    {
                        BLTrayecto blTrayecto = new BLTrayecto();

                        string sMsgTrayecto = trayecto.validasionCrearAgencias();
                        if (sMsgTrayecto != "")
                        {
                            return(Content(HttpStatusCode.NotFound, sMsgTrayecto));
                        }
                        else if (trayecto.Id == null)
                        {
                            ActualTrayecto = blTrayecto.addTrayecto(creaAgencias(trayecto));
                        }
                        else
                        {
                            if (blTrayecto.paquetesTransito(trayecto) != 0)
                            {
                                return(Content(HttpStatusCode.NotFound, "Hay paquetes en transito"));
                            }
                            else
                            {
                                ActualTrayecto = blTrayecto.updateTrayecto(creaAgencias(trayecto));
                            }
                        }
                    }

                    if (p.IdTrayecto == null)
                    {
                        p.IdTrayecto = ActualTrayecto.Id;
                    }
                    if (p.Destinatario != null && cActualDestinatario != null)
                    {
                        cActualDestinatario = bl.updateCliente(p.Destinatario);
                    }
                    else if (p.Destinatario != null && cActualDestinatario == null)
                    {
                        p.Destinatario.Id   = 0;
                        cActualDestinatario = bl.addCliente(p.Destinatario);
                    }
                    if (p.Remitente != null && cActualRemitente != null)
                    {
                        cActualRemitente = bl.updateCliente(p.Remitente);
                    }
                    else if (p.Remitente != null && cActualRemitente == null)
                    {
                        p.Remitente.Id   = 0;
                        cActualRemitente = bl.addCliente(p.Remitente);
                    }
                    p.IdDestinatario = cActualDestinatario.Id;
                    p.IdRemitente    = cActualRemitente.Id;
                    SPaquete np = null;
                    if (p.Id == null)
                    {
                        np = blPaquete.addPaquete(p);
                    }
                    else
                    {
                        np = blPaquete.updatePaquete(p);
                    }
                    return(Ok(new SAERespuesta()
                    {
                        usuario = usuario,
                        trayecto = t,
                        paquete = np
                    }));
                }
            }
            catch (Exception e)
            {
                return(Content(HttpStatusCode.InternalServerError, e.Message));
            }
        }
Exemple #14
0
        public SPaquetePuntoControl avanzar(SPaquetePuntoControl ppc)
        {
            try
            {
                var      _dalPPC = new DALPaquetePuntoControl();
                var      _dalPC  = new DALPuntoControl();
                var      _dalT   = new DALTrayecto();
                SPaquete p       = _dal.getPaquete(ppc.IdPaquete);
                if (p != null && p.Borrado == false)
                {
                    STrayecto t = _dalT.getTrayecto((int)p.IdTrayecto);
                    List <SPaquetePuntoControl> ppcList = _dalPPC.getAllByPaquete((int)p.Id);
                    ppc.FechaLlegada = DateTime.Now;
                    ppc.Borrado      = false;
                    if (ppcList.Count > 0)
                    {
                        if (t.ListaPuntosControl.Max(x => x.Orden) > ppcList.Max(y => t.ListaPuntosControl.First(z => z.Id == y.IdPuntoControl).Orden) + 1)
                        {
                            SPuntoControl pcActual = t.ListaPuntosControl.First(x => x.Orden == ppcList.Max(y => t.ListaPuntosControl.First(z => z.Id == y.IdPuntoControl).Orden) + 1);
                            ppc.IdPuntoControl = (int)t.ListaPuntosControl.First(x => x.Orden == pcActual.Orden).Id;
                            int tiempoEstimado = 0;
                            t.ListaPuntosControl.ForEach(x =>
                            {
                                if (x.Orden <= pcActual.Orden)
                                {
                                    tiempoEstimado += x.Tiempo;
                                }
                            });
                            int tiempoViaje = (p.FechaIngreso - ppc.FechaLlegada).Seconds;
                            if ((tiempoViaje <= tiempoEstimado))
                            {
                                ppc.Retraso -= (tiempoEstimado - tiempoViaje);
                            }
                            else
                            {
                                ppc.Retraso += (tiempoViaje - tiempoEstimado);
                            }
                            BLEmail.actualizacionEstado(new BLPaquete().getPaquete(ppc.IdPaquete));
                            return(_dalPPC.addPaquetePuntoControl(ppc));
                        }
                        else if (t.ListaPuntosControl.Max(x => x.Orden) == ppcList.Max(y => t.ListaPuntosControl.First(z => z.Id == y.IdPuntoControl).Orden) + 1)
                        {
                            throw new ECompartida("Solo queda el ultimo paso de entrega, para esto debe realizar la peticion correspondiente enviando el codigo proporcionado por el cliente");
                        }
                        else
                        {
                            throw new ECompartida("El paquete ya llego a su punto final, no se puede avanzar mas");
                        }
                    }
                    else
                    {
                        ppc.IdPuntoControl = (int)t.ListaPuntosControl.First(x => x.Orden == 1).Id;
                        return(_dalPPC.addPaquetePuntoControl(ppc));
                    }
                }

                throw new ECompartida("Error");
            }
            catch (Exception)
            {
                throw;
            }
        }