Пример #1
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;
     }
 }
Пример #2
0
 public bool retroceder(SPaquetePuntoControl ppc)
 {
     try
     {
         var _dalPPC = new DALPaquetePuntoControl();
         List <SPaquetePuntoControl> ppcList = _dalPPC.getAllByPaquete(ppc.IdPaquete);
         if (ppcList.Count() > 0)
         {
             int ppcAEliminarId = ppcList.Max(x => x.Id);
             SPaquetePuntoControl ppcAEliminar = ppcList.First(x => x.Id == ppcAEliminarId);
             if (ppcAEliminar != null)
             {
                 var      _dalU    = new DALUsuario();
                 SUsuario empleado = _dalU.getUsuario(ppc.IdEmpleado);
                 if ((empleado.Rol == "Funcionario" && empleado.Id == ppcAEliminar.IdEmpleado) || empleado.Rol == "Encargado" || empleado.Rol == "Admin")
                 {
                     BLEmail.actualizacionEstado(new BLPaquete().getPaquete(ppc.IdPaquete));
                     return(_dalPPC.deletePaquetePuntoControl(ppcAEliminar.Id));
                 }
                 else
                 {
                     throw new ECompartida("El usuario que realizo la peticion no tiene autorizacion para realizar esta operacion");
                 }
             }
             throw new ECompartida("No se encontro ningun paquete con el ID enviado");
         }
         throw new ECompartida("No se puede retroceder mas el paquete");
     }
     catch (Exception)
     {
         throw;
     }
 }
Пример #3
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;
            }
        }