コード例 #1
0
 public IHttpActionResult GetId(int id)
 {
     try
     {
         BLPaquete bl       = new BLPaquete();
         SPaquete  p        = bl.getPaquete(id);
         string    rolToken = TokenInfo.getClaim(Request, "role");
         if (rolToken == "Cliente")
         {
             string    emailToken = TokenInfo.getClaim(Request, "email");
             BLCliente blc        = new BLCliente();
             SCliente  c          = blc.getClienteByEmail(emailToken);
             if (p.IdDestinatario == c.Id || p.IdRemitente == c.Id)
             {
                 return(Ok(p));
             }
             else
             {
                 throw new ECompartida("Alto ahi maleante! No tienes acceso a esta informacion");
             }
         }
         else
         {
             return(Ok(p));
         }
     }
     catch (Exception e)
     {
         return(Content(HttpStatusCode.InternalServerError, e.Message));
     }
 }
コード例 #2
0
 public SPaquete addPaquete(SPaquete a)
 {
     try
     {
         if (new BLTrayecto().validarTrayecto((int)a.IdTrayecto))
         {
             a.Id                 = 0;
             a.FechaIngreso       = DateTime.Now;
             a.FechaEntrega       = DateTime.Now;
             a.CodigoConfirmacion = Randoms.RandomString(6);
             a.Codigo             = "";
             a.Borrado            = false;
             //a.ListaPaquetePuntoControl = null;
             SPaquete p = _dal.addPaquete(a);
             if (p != null)
             {
                 QRCodeGenerator qrGenerator = new QRCodeGenerator();
                 QRCodeData      qrCodeData  = qrGenerator.CreateQrCode(p.Id.ToString(), QRCodeGenerator.ECCLevel.Q);
                 Base64QRCode    qrCode      = new Base64QRCode(qrCodeData);
                 p.Codigo = qrCode.GetGraphic(20);
                 SPaquete pr = _dal.updatePaquete(p);
                 BLEmail.nuevoPaquete(pr);
                 return(pr);
             }
             throw new ECompartida("Algun error raro en a;adir el paquete");
         }
         throw new ECompartida("El trayecto no cumple con las condiciones necesarias, reviselo y vuelva a intentarlo");
     }
     catch (Exception)
     {
         throw;
     }
 }
コード例 #3
0
 public SPaquete updatePaquete(SPaquete a)
 {
     try
     {
         return(_dal.updatePaquete(a));
     }
     catch (Exception)
     {
         throw;
     }
 }
コード例 #4
0
 public IHttpActionResult updatePaquete(SPaquete a)
 {
     try
     {
         BLPaquete bl = new BLPaquete();
         return(Ok(bl.updatePaquete(a)));
     }
     catch (Exception e)
     {
         return(Content(HttpStatusCode.InternalServerError, e.Message));
     }
 }
コード例 #5
0
 public SPaquetePuntoControl entregaCliente(SPaquetePuntoControl ppc, string codigo)
 {
     try
     {
         SPaquete p = _dal.getPaquete(ppc.IdPaquete);
         if (p.CodigoConfirmacion == codigo)
         {
             var _dalPPC = new DALPaquetePuntoControl();
             var _dalPC  = new DALPuntoControl();
             var _dalT   = new DALTrayecto();
             ppc.FechaLlegada = DateTime.Now;
             ppc.Borrado      = false;
             var pclist = _dalPC.puntosControlDeUnTrayecto((int)p.IdTrayecto);
             ppc.IdPuntoControl = pclist.Max(x => (int)x.Id);
             List <SPaquetePuntoControl> ppcList = _dalPPC.getAllByPaquete((int)p.Id);
             ppcList.ForEach(x =>
             {
                 if (x.IdPuntoControl == ppc.IdPuntoControl)
                 {
                     throw new ECompartida("El paquete ya fue entregado al cliente anteriormente");
                 }
             });
             if (ppcList.Count != (pclist.Count - 1))
             {
                 throw new ECompartida("Aun falta avanzar pasos antes de poder entregar al cliente");
             }
             int tiempoEstimado = 0;
             pclist.ForEach(x =>
             {
                 if (x.Orden <= pclist.First(z => z.Id == ppc.IdPuntoControl).Orden)
                 {
                     tiempoEstimado += x.Tiempo;
                 }
             });
             int tiempoViaje = (p.FechaIngreso - ppc.FechaLlegada).Seconds;
             if ((tiempoViaje <= tiempoEstimado))
             {
                 ppc.Retraso -= (tiempoEstimado - tiempoViaje);
             }
             else
             {
                 ppc.Retraso += (tiempoViaje - tiempoEstimado);
             }
             return(_dalPPC.addPaquetePuntoControl(ppc));
         }
         throw new ECompartida("El codigo no coincide con el paquete");
     }
     catch (Exception)
     {
         throw;
     }
 }
コード例 #6
0
 public Paquete entidadAModelo(SPaquete p, Paquete pa)
 {
     //pa.id = p.Id;
     pa.idDestinatario     = p.IdDestinatario;
     pa.idRemitente        = p.IdRemitente;
     pa.IdTrayecto         = p.IdTrayecto;
     pa.codigo             = p.Codigo;
     pa.codigoConfirmacion = p.CodigoConfirmacion;
     pa.fechaIngreso       = p.FechaIngreso;
     pa.fechaEntrega       = p.FechaEntrega;
     pa.borrado            = p.Borrado;
     return(pa);
 }
コード例 #7
0
        public Paquete entidadAModelo(SPaquete p)
        {
            Paquete paquete = new Paquete()
            {
                id                 = (int)p.Id,
                idDestinatario     = p.IdDestinatario,
                idRemitente        = p.IdRemitente,
                IdTrayecto         = p.IdTrayecto,
                codigo             = p.Codigo,
                codigoConfirmacion = p.CodigoConfirmacion,
                fechaIngreso       = p.FechaIngreso,
                fechaEntrega       = p.FechaEntrega,
                borrado            = p.Borrado
            };

            return(paquete);
        }
コード例 #8
0
 static public string actualizacionEstado(SPaquete paquete) //blpaquete linea 133, 176
 {
     try
     {
         var                  client              = new RestClient("https://api.sendinblue.com/v3/smtp/email");
         var                  request             = setRequest("post");
         BLTrayecto           _blT                = new BLTrayecto();
         BLPaquete            _blP                = new BLPaquete();
         var                  dp                  = _blP.detallesPaquete("", "Admin", (int)paquete.Id);
         DateTime             tiempoEstimado      = DateTime.Now;
         string               paquetePuntoControl = "";
         SPaquetePuntoControl ppcActual           = new SPaquetePuntoControl()
         {
             Id = 0
         };
         foreach (var item in dp.PaquetePuntoControl)
         {
             if (item.Id > ppcActual.Id)
             {
                 ppcActual = item;
             }
         }
         foreach (var item in dp.Trayecto.ListaPuntosControl)
         {
             if (item.Id > ppcActual.Id)
             {
                 tiempoEstimado = tiempoEstimado.AddSeconds(item.Tiempo);
             }
             if (item.Id == ppcActual.IdPuntoControl)
             {
                 paquetePuntoControl += "||" + item.Nombre + " / Tu paquete se encuentra aquí actualmente || - ";
             }
             else
             {
                 paquetePuntoControl += item.Nombre + " - ";
             }
         }
         request.AddParameter("application/json", "{\"sender\":{\"email\":\"[email protected]\"},\"to\":[{\"email\":\"" + dp.Destinatario.Email + "\"}],\"replyTo\":{\"email\":\"[email protected]\"},\"templateId\":3,\"params\":{\"remitenteNombre\":\"" + dp.Remitente.NombreCompleto + "\",\"remitenteEmail\":\"" + dp.Remitente.Email + "\",\"remitenteTelefono\":\"" + dp.Remitente.Telefono + "\",\"codigoEntrega\":\"" + paquete.CodigoConfirmacion + "\",\"puntoControlPaquete\":\"" + paquetePuntoControl + "\",\"fechaEntregaEstimada\":\"" + tiempoEstimado.ToString() + "\"}}", ParameterType.RequestBody);
         IRestResponse response = client.Execute(request);
         return(response.Content);
     }
     catch (Exception)
     {
         throw;
     }
 }
コード例 #9
0
 public SPaquete updatePaquete(SPaquete a)
 {
     using (trackingFULLEntities en = new trackingFULLEntities())
     {
         try
         {
             Paquete ag = en.Paquete.Find(a.Id);
             ag = _conv.entidadAModelo(a, ag);
             en.SaveChanges();
             return(_conv.modeloAEntidad(ag));
         }
         catch (Exception e)
         {
             throw;
         }
     }
 }
コード例 #10
0
 public string consultarEstado(string codigo, string email)
 {
     try
     {
         BLCliente _blC = new BLCliente();
         SCliente  c    = _blC.getClienteByEmail(email);
         SPaquete  p    = _dal.consultaEstado(c.Id, codigo);
         if (p.FechaEntrega == p.FechaIngreso)
         {
             return("El paquete se encuentra en viaje actualmente, para mas detalles: " + Direcciones.Web + "paquete/details/" + p.Id);
         }
         return("El paquete ya fue entregado, para mas detalles: " + Direcciones.Web + "paquete/details/" + p.Id);
     }
     catch (Exception)
     {
         throw;
     }
 }
コード例 #11
0
 public IHttpActionResult retroceder(SPaquete es)
 {
     try
     {
         string    email = TokenInfo.getClaim(Request, "email");
         BLUsuario _blU  = new BLUsuario();
         SUsuario  u     = _blU.getUsuarioByEmail(email);
         BLPaquete bl    = new BLPaquete();
         return(Ok(bl.retroceder(new SPaquetePuntoControl()
         {
             IdPaquete = (int)es.Id, IdEmpleado = u.Id
         })));
     }
     catch (Exception e)
     {
         return(Content(HttpStatusCode.InternalServerError, e.Message));
     }
 }
コード例 #12
0
 public bool updateEnvioDomicilio(SDomicilio d, string email)
 {
     try
     {
         SPaquete  p    = getPaquete(d.IdPaquete);
         BLCliente _blC = new BLCliente();
         SCliente  c    = _blC.getCliente((int)p.IdDestinatario);
         if (c.Email == email)
         {
             return(_dal.updateEnvioDomicilio(d));
         }
         throw new ECompartida("No tienes permisos para realizar esta accion");
     }
     catch (Exception)
     {
         throw;
     }
 }
コード例 #13
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;
     }
 }
コード例 #14
0
 public SPaquete addPaquete(SPaquete a)
 {
     using (trackingFULLEntities en = new trackingFULLEntities())
     {
         try
         {
             Paquete ag = en.Paquete.Add(_conv.entidadAModelo(a));
             en.SaveChanges();
             SPaquete p = _conv.modeloAEntidad(ag);
             //en.Domicilio5.Add(new Domicilio5() { idPaquete = (int)p.Id, envio = false });
             //en.SaveChanges();
             return(p);
         }
         catch (Exception e)
         {
             throw;
         }
     }
 }
コード例 #15
0
        //PAQUETE

        public SPaquete modeloAEntidad(Paquete p)
        {
            if (p == null)
            {
                return(null);
            }
            SPaquete paquete = new SPaquete()
            {
                Id                 = p.id,
                IdDestinatario     = (int)p.idDestinatario,
                IdRemitente        = (int)p.idRemitente,
                IdTrayecto         = (int)p.IdTrayecto,
                Codigo             = p.codigo,
                CodigoConfirmacion = p.codigoConfirmacion,
                FechaIngreso       = (DateTime)p.fechaIngreso,
                FechaEntrega       = (DateTime)p.fechaEntrega,
                Borrado            = (bool)p.borrado
            };

            return(paquete);
        }
コード例 #16
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));
            }
        }
コード例 #17
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;
            }
        }