예제 #1
0
        public bool EnvioEntregado(int pNroEnvio, Oficina pOficina, DateTime pFechaRec, DateTime pFechaSal, string pNombreRec, string pFotoFirma)
        {
            bool  valido   = true;
            Envio nuevoEnv = this.BuscarEnvio(pNroEnvio);


            if (pFechaRec != null && pFechaSal != null && pNombreRec != "" && pFotoFirma != "" && nuevoEnv != null &&
                nuevoEnv.Recorrido.Status == Dominio.Envio.EstadoEnvios.Para_entregar)
            {
                if (nuevoEnv is Documento)
                {
                    Documento docAux = nuevoEnv as Documento;
                    if (docAux.EsLegal)
                    {
                        if (docAux.NombreReceptor != pNombreRec)
                        {
                            valido = false;
                        }
                    }
                }
                if (valido)
                {
                    nuevoEnv.Recorrido.Status         = Envio.EstadoEnvios.Entregado;
                    nuevoEnv.Recorrido.FechaRecepcion = pFechaRec;
                    nuevoEnv.Recorrido.FechaSalida    = pFechaSal;
                    nuevoEnv.Recorrido.Oficina        = pOficina;
                    nuevoEnv.NombreReceptor           = pNombreRec;
                    nuevoEnv.FirmaReceptor            = pFotoFirma;

                    Recorrido recNuevo = new Recorrido(nuevoEnv.Recorrido.Status, nuevoEnv.Recorrido.Oficina, nuevoEnv.Recorrido.FechaRecepcion, nuevoEnv.Recorrido.FechaSalida);
                    nuevoEnv.ListaRecorrido.Add(recNuevo);
                }
            }
            return(valido);
        }
예제 #2
0
        // dandole de parámetro el numero de envio, busca si existe el envio. Si existe,
        // busca las etapas de envio a partir de ese objeto, para procesarse luego.
        // Si no existe el envio, devuelve una lista vacia.
        public List <EtapaEnvio> RastrearEnvio(int pNroEnvio)
        {
            Envio             envioEncontrado = BuscarEnvio(pNroEnvio);
            List <EtapaEnvio> listaEtapas     = new List <EtapaEnvio>();

            if (envioEncontrado != null)
            {
                listaEtapas = envioEncontrado.EtapasDelEnvio;
            }
            return(listaEtapas);
        }
예제 #3
0
        public decimal FacturadoEntreFechas(List <Envio> listaEnvios)
        {
            decimal facturado = 0;

            for (int i = 0; i < this.listaEnvios.Count; i++)
            {
                Envio aux = this.listaEnvios[i];
                facturado = facturado + aux.Precio;
            }
            return(facturado);
        }
예제 #4
0
 /*Agrega un envio a la lista de envios que tiene el cliente */
 public void AgregarEnvio(Envio pEnvio)
 {
     // me aseguro que no sea admin, que no puede tener envios
     if (this.esAdmin == false)
     {
         if (enviosCliente == null)
         {
             enviosCliente = new List <Envio>();
         }
         enviosCliente.Add(pEnvio);
     }
 }
예제 #5
0
        //Mostrar los envios de un cliente entre dos fechas dadas y mostrar el total facturado hasta ese momento
        public List <Envio> EnviosFacturados(List <Envio> listaEnvios, DateTime pFechaIni, DateTime pFechaFin)
        {
            int          i        = 0;
            List <Envio> listaAux = new List <Envio>();

            while (i < this.listaEnvios.Count)
            {
                Envio aux = this.listaEnvios[i];

                if (aux.FechaEnvio >= pFechaIni && aux.FechaEnvio < pFechaFin)
                {
                    listaAux.Add(aux);
                }
                i++;
            }
            return(listaAux);
        }
예제 #6
0
        /*Segun un cliente y un precio, listar todos los envios de ese cliente que superen el precio dado
         * Le paso una lista de todos los envios del cliente*/
        public List <Envio> EnviosSegunPrecio(List <Envio> listaEnvios, decimal pPrecio)
        {
            int          i        = 0;
            List <Envio> listaAux = new List <Envio>();

            while (i < this.listaEnvios.Count)
            {
                Envio aux = this.listaEnvios[i];

                if (aux.Precio > pPrecio)
                {
                    listaAux.Add(aux);
                }
                i++;
            }
            return(listaAux);
        }
예제 #7
0
        /*Solo los envios que esten para entregar o entregados, ordenados por fecha de entrega descendente
         * Recibe lista de todos los envios de un cliente*/
        public List <Envio> EnviosYaEntregados(List <Envio> listaEnvios)
        {
            int          i        = 0;
            List <Envio> listaAux = new List <Envio>();

            while (i < this.listaEnvios.Count)
            {
                Envio aux = this.listaEnvios[i];

                if (aux.Estado == Envio.EstadoEnvios.Para_entregar || aux.Estado == Envio.EstadoEnvios.Entregado)
                {
                    listaAux.Add(aux);
                }
                i++;
            }
            return(listaAux);
        }
예제 #8
0
        //Todos los envios de un cliente
        public List <Envio> EnviosDeCli(string pCi)
        {
            int          i        = 0;
            List <Envio> listaAux = new List <Envio>();

            while (i < this.listaEnvios.Count)
            {
                Envio aux = this.listaEnvios[i];

                if (aux.Cliente.Ci == pCi)
                {
                    listaAux.Add(aux);
                }
                i++;
            }
            return(listaAux);
        }
예제 #9
0
        /*Listar todos los envíos que tienen estado ‘en tránsito’ y más de 5 días de enviados ordenados por
         * fecha de ingreso del envío ascendente y luego por documento del cliente descendente*/
        public List <Envio> EnviosEnTransito(List <Envio> listaEnvios)
        {
            int          i        = 0;
            List <Envio> listaAux = new List <Envio>();

            while (i < this.listaEnvios.Count)
            {
                Envio    aux         = this.listaEnvios[i];
                DateTime fechaActual = DateTime.Today;

                if (aux.Estado == Envio.EstadoEnvios.En_transito && (aux.FechaEnvio.CompareTo(fechaActual) <= 5))
                {
                    listaAux.Add(aux);
                }
                i++;
            }
            return(listaAux);
        }
예제 #10
0
        public bool ExisteEnvio(int pNroEnvio)
        {
            bool encontre = false;

            int i = 0;

            while (i < this.listaEnvios.Count && !encontre)
            {
                Envio aux = this.listaEnvios[i];

                if (aux.NroEnvio == pNroEnvio)
                {
                    encontre = true;
                }
                i++;
            }
            return(encontre);
        }
예제 #11
0
        /*Dado un Nro de envio se recorre la lista de envios para buscarlo. Retorna Envio encontrado o null*/
        public Envio BuscarEnvio(int pId)
        {
            Envio aux = null;
            int   i   = 0;

            if (this.listaEnvios != null)
            {
                while (i < this.listaEnvios.Count && aux == null)
                {
                    Envio env = this.listaEnvios[i];
                    if (env.NroEnvio == pId)
                    {
                        aux = env;
                    }
                    i++;
                }
            }
            return(aux);
        }
예제 #12
0
        public Envio BuscarEnvio(int pNroEnvio)
        {
            Envio buscado  = null;
            bool  encontre = false;
            int   i        = 0;

            while (i < this.listaEnvios.Count && !encontre)
            {
                Envio aux = this.listaEnvios[i];

                if (aux.NroEnvio == pNroEnvio)
                {
                    buscado  = aux;
                    encontre = true;
                }

                i++;
            }

            return(buscado);
        }
예제 #13
0
        public void ModificarEstado(int pNroEnvio, Oficina pOfiActual, DateTime pFechaRec, DateTime pFechaSal)
        {
            Envio nuevoEnv = this.BuscarEnvio(pNroEnvio);

            //Si encuentro oficina y envio
            if (nuevoEnv != null && pOfiActual != null)
            {
                //Si la oficina actual no es la de origen ni la final
                if (pOfiActual.NroOficina != nuevoEnv.NroOfiOrig.NroOficina && pOfiActual.NroOficina != nuevoEnv.NroOfiFinal.NroOficina)
                {
                    //Si el estatus no es "entregado" o "para entregar"
                    if (nuevoEnv.Recorrido.Status != Dominio.Envio.EstadoEnvios.Entregado && nuevoEnv.Recorrido.Status != Dominio.Envio.EstadoEnvios.Para_entregar)
                    {
                        nuevoEnv.Estado                   = Envio.EstadoEnvios.En_transito;
                        nuevoEnv.Recorrido.Status         = Envio.EstadoEnvios.En_transito;
                        nuevoEnv.Recorrido.Oficina        = pOfiActual;
                        nuevoEnv.Recorrido.FechaRecepcion = pFechaRec;
                        nuevoEnv.Recorrido.FechaSalida    = pFechaSal;

                        Recorrido recNuevo = new Recorrido(nuevoEnv.Recorrido.Status, nuevoEnv.Recorrido.Oficina, nuevoEnv.Recorrido.FechaRecepcion,
                                                           nuevoEnv.Recorrido.FechaSalida);
                        nuevoEnv.ListaRecorrido.Add(recNuevo);
                    }
                }
                //Si la oficina actual es igual al nro de oficina final y ya no esta entregada o en para entregar, cambiar estado a "Para entregar"
                else if (pOfiActual.NroOficina == nuevoEnv.NroOfiFinal.NroOficina && nuevoEnv.Recorrido.Status != Dominio.Envio.EstadoEnvios.Entregado &&
                         nuevoEnv.Recorrido.Status != Dominio.Envio.EstadoEnvios.Para_entregar)
                {
                    nuevoEnv.Estado                   = Envio.EstadoEnvios.Para_entregar;
                    nuevoEnv.Recorrido.Status         = Envio.EstadoEnvios.Para_entregar;
                    nuevoEnv.Recorrido.Oficina        = pOfiActual;
                    nuevoEnv.Recorrido.FechaRecepcion = pFechaRec;
                    nuevoEnv.Recorrido.FechaSalida    = pFechaSal;

                    Recorrido recNuevo = new Recorrido(nuevoEnv.Recorrido.Status, nuevoEnv.Recorrido.Oficina, nuevoEnv.Recorrido.FechaRecepcion,
                                                       nuevoEnv.Recorrido.FechaSalida);
                    nuevoEnv.ListaRecorrido.Add(recNuevo);
                }
            }
        }
예제 #14
0
        public string BuscarClienteParaUnEnvio(int pNroEnvio) // <<<<<---------
        {
            string idCliente = "";

            Envio pEnvio = this.BuscarEnvio(pNroEnvio);

            if (this.listaClientes != null)
            {
                foreach (Usuario cli in this.listaClientes)
                {
                    if (cli.EnviosCliente != null)
                    {
                        foreach (Envio env in cli.EnviosCliente)
                        {
                            if (env.NroEnvio == pEnvio.NroEnvio)
                            {
                                idCliente = cli.Documento;
                            }
                        }
                    }
                }
            }
            return(idCliente);
        }