private ComprobacionDePedidos ValidacionUpdate(PedidosArea PedidoNew)
        {
            int count = 0;
            ComprobacionDePedidos CDP = new ComprobacionDePedidos();

            RepositoryPedidosArea RPA       = new RepositoryPedidosArea();
            PedidosArea           pedidoOld = RPA.GetPedidoByID(PedidoNew.id).First();

            //DosEstLimStock
            RepositoryDosEstLimp RDEL = new RepositoryDosEstLimp();

            if (PedidoNew.IdDosEstLim == null || PedidoNew.IdDosEstLim.Value == 0 || PedidoNew.CanDosEstLim == null)
            {
                CDP._DosEstLimStock = true;
            }
            else
            {
                if (pedidoOld.CanDosEstLim < PedidoNew.CanDosEstLim)
                {
                    int?stockDosEstLimStock = RDEL.GetEstacionesByID(PedidoNew.IdDosEstLim.Value).First().EqDisponibles;

                    if (stockDosEstLimStock > (PedidoNew.CanDosEstLim - pedidoOld.CanDosEstLim))
                    {
                        CDP._DosEstLimStock = true;
                    }
                }
                else
                {
                    CDP._DosEstLimStock = true;
                }
            }


            //ModJabStock
            if (PedidoNew.IdModJab == null || PedidoNew.IdModJab.Value == 0 || PedidoNew.CanModJab == 0)
            {
                CDP._ModJabStock = true;
            }
            else
            {
                RepositoryModJab RMJ = new RepositoryModJab();

                if (pedidoOld.CanModJab < PedidoNew.CanModJab)
                {
                    int?stockModJabStock = RMJ.GetJaboneraByID(PedidoNew.IdModJab.Value).First().Stock;

                    if (stockModJabStock > (PedidoNew.CanModJab - pedidoOld.CanModJab))
                    {
                        CDP._ModJabStock = true;
                    }
                }
                else
                {
                    CDP._ModJabStock = true;
                }
            }


            //CepInBasStock
            if (PedidoNew.CanCepInBas == null)
            {
                CDP._CepInBasStock = true;
            }
            else
            {
                RepositoryCepInsBas RCIB = new RepositoryCepInsBas();

                if (pedidoOld.CanCepInBas < PedidoNew.CanCepInBas)
                {
                    List <AdmCepInBas> listAdm = RCIB.GetAllConsumibles();

                    foreach (var item in listAdm)
                    {
                        if (item.Stock > (PedidoNew.CanCepInBas - pedidoOld.CanCepInBas))
                        {
                            count += 1;
                        }
                    }

                    if (count == 3)
                    {
                        CDP._CepInBasStock = true;
                    }
                }
                else
                {
                    CDP._CepInBasStock = true;
                }
            }


            //TipMaqLavStock
            if (PedidoNew.IdTipMaqLav == null || PedidoNew.IdTipMaqLav.Value == 0 || PedidoNew.CanTipMaqLav == null)
            {
                CDP._TipMaqLavStock = true;
            }
            else
            {
                RepositoryTipMaqLav RTML = new RepositoryTipMaqLav();

                if (pedidoOld.CanTipMaqLav < PedidoNew.CanTipMaqLav)
                {
                    int?stockTipMaqLavStock = RTML.GetLavavajillasByID(PedidoNew.IdTipMaqLav.Value).First().Stock;

                    if (stockTipMaqLavStock > (PedidoNew.CanTipMaqLav - pedidoOld.CanTipMaqLav))
                    {
                        CDP._TipMaqLavStock = true;
                    }
                }
                else
                {
                    CDP._TipMaqLavStock = true;
                }
            }


            //QuimicosStock

            if (string.IsNullOrEmpty(PedidoNew.ProdQuim))
            {
                CDP._QuimicosStock = true;
            }
            else
            {
                RepositoryProdQuim RPQ = new RepositoryProdQuim();

                List <string> listQuimicos = getProductos(PedidoNew.ProdQuim);

                List <AdmProdQuim> listAdmProdQuim = new List <AdmProdQuim>();
                count = 0;

                for (int i = 0; i < listQuimicos.Count(); i++)
                {
                    listAdmProdQuim.Add(RPQ.GetQuimicoByName(listQuimicos[i]).First());

                    if (listAdmProdQuim[i].Stock >= 1)
                    {
                        count += 1;
                    }
                }
                if (count == listQuimicos.Count())
                {
                    CDP._QuimicosStock = true;
                }
            }


            //DosLavStock
            if (string.IsNullOrEmpty(PedidoNew.DosLav))
            {
                CDP._DosLavStock = true;
            }
            else
            {
                RepositoryDosLav RDL = new RepositoryDosLav();

                List <string> listDosLav = getProductos(PedidoNew.DosLav);

                List <AdmDosLav> listDosLav2 = new List <AdmDosLav>();
                count = 0;
                for (int i = 0; i < listDosLav.Count(); i++)
                {
                    listDosLav2.Add(RDL.GetDosificadoresByName(listDosLav[i])[0]);

                    if (listDosLav2[i].Stock >= 1)
                    {
                        count += 1;
                    }
                }
                if (count == listDosLav.Count())
                {
                    CDP._DosLavStock = true;
                }
            }


            //ModEqDos
            if (PedidoNew.IdModEqDos == null || PedidoNew.IdModEqDos.Value == 0 || PedidoNew.CanModEqDos == null)
            {
                CDP._ModEqDos = true;
            }
            else
            {
                RepositoryModEqDos RMED = new RepositoryModEqDos();

                if (pedidoOld.CanModEqDos < PedidoNew.CanModEqDos)
                {
                    int?stockModEqDos = RMED.GetEquipoDosificadorByID(PedidoNew.IdModEqDos.Value).First().EqDisponibles;

                    if (stockModEqDos > (PedidoNew.CanModEqDos - pedidoOld.CanModEqDos))
                    {
                        CDP._ModEqDos = true;
                    }
                }
                else
                {
                    CDP._ModEqDos = true;
                }
            }

            //PorGalon
            if (PedidoNew.IdPorGalon == null || PedidoNew.IdPorGalon.Value == 0 || PedidoNew.CanPorGalon == null)
            {
                CDP._PorGalon = true;
            }
            else
            {
                RepositoryPortGalon RPG = new RepositoryPortGalon();

                if (pedidoOld.CanPorGalon < PedidoNew.CanPorGalon)
                {
                    int?stockPorGalon = RPG.GetGaloneraByID(PedidoNew.IdPorGalon.Value).First().Stock;

                    if (stockPorGalon > (PedidoNew.CanPorGalon - pedidoOld.CanPorGalon))
                    {
                        CDP._PorGalon = true;
                    }
                }
                else
                {
                    CDP._PorGalon = true;
                }
            }


            return(CDP);
        }
        private bool ModificadorStockUpdate(PedidosArea PedidoNuevo, PedidosArea PedidoAntiguo)
        {
            #region Variables Constantes
            int id = PedidoNuevo.id;
            RepositoryPedidosArea RPA = new RepositoryPedidosArea();
            bool res = false;
            #endregion

            #region condicionales constantes

            if (PedidoNuevo.IdDosEstLim != null)
            {
                if (PedidoAntiguo.CanDosEstLim < PedidoNuevo.CanDosEstLim)
                {
                    RepositoryDosEstLimp RDEL = new RepositoryDosEstLimp();
                    id = PedidoNuevo.IdDosEstLim.Value;
                    AdmDosEstLim entidad = RDEL.GetEstacionesByID(id).First();

                    entidad.EqDisponibles = entidad.EqDisponibles - (PedidoNuevo.CanDosEstLim - PedidoAntiguo.CanDosEstLim);
                    if (RDEL.ActualizarEstacion(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
                else
                {
                    RepositoryDosEstLimp RDEL = new RepositoryDosEstLimp();
                    id = PedidoNuevo.IdDosEstLim.Value;
                    AdmDosEstLim entidad = RDEL.GetEstacionesByID(id).First();

                    entidad.EqDisponibles = entidad.EqDisponibles + (PedidoAntiguo.CanDosEstLim - PedidoNuevo.CanDosEstLim);
                    if (RDEL.ActualizarEstacion(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
            }

            if (PedidoNuevo.IdModJab != null)
            {
                if (PedidoAntiguo.CanModJab < PedidoNuevo.CanModJab)
                {
                    RepositoryModJab RMJ = new RepositoryModJab();
                    id = PedidoNuevo.IdModJab.Value;
                    AdmModJab entidad = RMJ.GetJaboneraByID(id).First();

                    entidad.Stock = entidad.Stock - (PedidoNuevo.CanModJab - PedidoAntiguo.CanModJab);
                    if (RMJ.ActualizarJabonera(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
                else
                {
                    RepositoryModJab RMJ = new RepositoryModJab();
                    id = PedidoNuevo.IdModJab.Value;
                    AdmModJab entidad = RMJ.GetJaboneraByID(id).First();

                    entidad.Stock = entidad.Stock + (PedidoAntiguo.CanModJab - PedidoNuevo.CanModJab);
                    if (RMJ.ActualizarJabonera(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
            }

            if (PedidoNuevo.IdTipMaqLav != null)
            {
                if (PedidoAntiguo.CanTipMaqLav < PedidoNuevo.CanTipMaqLav)
                {
                    RepositoryTipMaqLav RTML = new RepositoryTipMaqLav();
                    id = PedidoNuevo.IdTipMaqLav.Value;
                    AdmTipMaqLav entidad = RTML.GetLavavajillasByID(id).First();

                    entidad.Stock = entidad.Stock - (PedidoNuevo.CanTipMaqLav - PedidoAntiguo.CanTipMaqLav);
                    if (RTML.ActualizarLavavajillas(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
                else
                {
                    RepositoryTipMaqLav RTML = new RepositoryTipMaqLav();
                    id = PedidoNuevo.IdTipMaqLav.Value;
                    AdmTipMaqLav entidad = RTML.GetLavavajillasByID(id).First();

                    entidad.Stock = entidad.Stock + (PedidoAntiguo.CanTipMaqLav - PedidoNuevo.CanTipMaqLav);
                    if (RTML.ActualizarLavavajillas(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
            }

            if (PedidoNuevo.IdModEqDos != 0 && PedidoNuevo.IdModEqDos != null)
            {
                if (PedidoAntiguo.CanModEqDos < PedidoNuevo.CanModEqDos)
                {
                    RepositoryModEqDos RMED = new RepositoryModEqDos();
                    id = PedidoNuevo.IdModEqDos.Value;
                    AdmModEqDos entidad = RMED.GetEquipoDosificadorByID(id).First();

                    entidad.EqDisponibles = entidad.EqDisponibles - (PedidoNuevo.CanModEqDos - PedidoAntiguo.CanModEqDos);
                    if (RMED.ActualizarEquipoDosificador(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
                else
                {
                    RepositoryModEqDos RMED = new RepositoryModEqDos();
                    id = PedidoNuevo.IdModEqDos.Value;
                    AdmModEqDos entidad = RMED.GetEquipoDosificadorByID(id).First();

                    entidad.EqDisponibles = entidad.EqDisponibles + (PedidoAntiguo.CanModEqDos - PedidoNuevo.CanModEqDos);
                    if (RMED.ActualizarEquipoDosificador(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
            }

            if (PedidoNuevo.IdPorGalon != null)
            {
                if (PedidoAntiguo.CanPorGalon < PedidoNuevo.CanPorGalon)
                {
                    RepositoryPortGalon RPG = new RepositoryPortGalon();
                    id = PedidoNuevo.IdPorGalon.Value;
                    AdmPortGalon entidad = RPG.GetGaloneraByID(id).First();

                    entidad.Stock = entidad.Stock - (PedidoNuevo.CanPorGalon - PedidoAntiguo.CanPorGalon);
                    if (RPG.ActualizarGalonera(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
                else
                {
                    RepositoryPortGalon RPG = new RepositoryPortGalon();
                    id = PedidoNuevo.IdPorGalon.Value;
                    AdmPortGalon entidad = RPG.GetGaloneraByID(id).First();

                    entidad.Stock = entidad.Stock + (PedidoAntiguo.CanPorGalon - PedidoNuevo.CanPorGalon);
                    if (RPG.ActualizarGalonera(entidad))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
            }
            #endregion

            #region Consumibles
            if (PedidoNuevo.CanCepInBas != null)
            {
                RepositoryCepInsBas RCIB             = new RepositoryCepInsBas();
                List <AdmCepInBas>  ListaConsumibles = RCIB.GetAllConsumibles();

                if (PedidoAntiguo.CanCepInBas < PedidoNuevo.CanCepInBas)
                {
                    int Diferencia = PedidoNuevo.CanCepInBas.Value - PedidoAntiguo.CanCepInBas.Value;

                    for (int i = 0; i < ListaConsumibles.Count(); i++)
                    {
                        ListaConsumibles[i].Stock = ListaConsumibles[i].Stock - Diferencia;
                        if (RCIB.ActualizarConsumibles(ListaConsumibles[i]))
                        {
                            res = true;
                        }
                        else
                        {
                            return(res = false);
                        }
                    }
                }
                else
                {
                    int Diferencia = PedidoAntiguo.CanCepInBas.Value - PedidoNuevo.CanCepInBas.Value;

                    for (int i = 0; i < ListaConsumibles.Count(); i++)
                    {
                        ListaConsumibles[i].Stock = ListaConsumibles[i].Stock + Diferencia;
                        if (RCIB.ActualizarConsumibles(ListaConsumibles[i]))
                        {
                            res = true;
                        }
                        else
                        {
                            return(res = false);
                        }
                    }
                }
            }
            #endregion

            #region Quimicos
            if (PedidoNuevo.IdModEqDos != null)
            {
                RepositoryProdQuim quimico         = new RepositoryProdQuim();
                AdmProdQuim        ProductoQuimico = new AdmProdQuim();


                if (PedidoAntiguo.ProdQuim != null)
                {
                    List <String> listaQuimicosAntiguos = getProductos(PedidoAntiguo.ProdQuim);

                    for (int i = 0; i < getProductos(PedidoAntiguo.ProdQuim).Count; i++) // Regenera el stock que se quito en el pedido original
                    {
                        ProductoQuimico        = quimico.GetQuimicoByName(listaQuimicosAntiguos[i]).First();
                        ProductoQuimico.Stock += 1;
                        if (quimico.ActualizarQuimico(ProductoQuimico))
                        {
                            res = true;
                        }
                        else
                        {
                            return(res = false);
                        }
                    }
                }

                if (PedidoNuevo.ProdQuim != null)
                {
                    List <String> listaQuimicosNuevos = getProductos(PedidoNuevo.ProdQuim);
                    for (int i = 0; i < getProductos(PedidoNuevo.ProdQuim).Count; i++) // Quita el stock que se requiere en el pedido nuevo
                    {
                        ProductoQuimico        = quimico.GetQuimicoByName(listaQuimicosNuevos[i]).First();
                        ProductoQuimico.Stock -= 1;
                        if (quimico.ActualizarQuimico(ProductoQuimico))
                        {
                            res = true;
                        }
                        else
                        {
                            return(res = false);
                        }
                    }
                }
            }
            #endregion

            #region DosLav
            if (PedidoNuevo.IdModEqDos != null)
            {
                RepositoryDosLav RDL         = new RepositoryDosLav();
                AdmDosLav        dosificador = new AdmDosLav();

                if (PedidoAntiguo.DosLav != null)
                {
                    List <String> listaDosificadoresAntiguos = getProductos(PedidoAntiguo.DosLav);
                    for (int i = 0; i < getProductos(PedidoAntiguo.DosLav).Count; i++) // Regenera el stock que se quito en el pedido original
                    {
                        dosificador        = RDL.GetDosificadoresByName(listaDosificadoresAntiguos[i]).First();
                        dosificador.Stock += 1;
                        if (RDL.ActualizarDosificador(dosificador))
                        {
                            res = true;
                        }
                        else
                        {
                            return(res = false);
                        }
                    }
                }

                if (PedidoNuevo.DosLav != null)
                {
                    List <String> listaDosificadoresNuevos = getProductos(PedidoNuevo.DosLav);
                    for (int i = 0; i < getProductos(PedidoNuevo.DosLav).Count; i++) // Quita el stock que se requiere en el pedido nuevo
                    {
                        dosificador        = RDL.GetDosificadoresByName(listaDosificadoresNuevos[i]).First();
                        dosificador.Stock -= 1;
                        if (RDL.ActualizarDosificador(dosificador))
                        {
                            res = true;
                        }
                        else
                        {
                            return(res = false);
                        }
                    }
                }
            }
            #endregion

            return(res);
        }
        private bool ModificadorStockCreate(PedidosArea Pedido)
        {
            bool res = true;
            int  id  = 0;

            RepositoryDosEstLimp RDEL = new RepositoryDosEstLimp();
            RepositoryModJab     RMJ  = new RepositoryModJab();
            RepositoryCepInsBas  RCIB = new RepositoryCepInsBas(); //MultiEntidad
            RepositoryTipMaqLav  RTML = new RepositoryTipMaqLav();
            RepositoryProdQuim   RPQ  = new RepositoryProdQuim();  //String
            RepositoryDosLav     RDL  = new RepositoryDosLav();    //String
            RepositoryModEqDos   RMED = new RepositoryModEqDos();
            RepositoryPortGalon  RPG  = new RepositoryPortGalon();

            #region Modificaciones constantes
            if (Pedido.IdDosEstLim != null)
            {
                id = Pedido.IdDosEstLim.Value;
                AdmDosEstLim ADEL = RDEL.GetEstacionesByID(id).First();
                ADEL.EqDisponibles = ADEL.EqDisponibles - Pedido.CanDosEstLim;
                if (RDEL.ActualizarEstacion(ADEL))
                {
                    res = true;
                }
                else
                {
                    return(res = false);
                }
            }

            if (Pedido.IdModJab != null)
            {
                id = Pedido.IdModJab.Value;
                AdmModJab AMJ = RMJ.GetJaboneraByID(id).First();
                AMJ.Stock = AMJ.Stock - Pedido.CanModJab;
                if (RMJ.ActualizarJabonera(AMJ))
                {
                    res = true;
                }
                else
                {
                    return(res = false);
                }
            }

            if (Pedido.IdTipMaqLav != null)
            {
                id = Pedido.IdTipMaqLav.Value;
                AdmTipMaqLav ATML = RTML.GetLavavajillasByID(id).First();
                ATML.Stock = ATML.Stock - Pedido.CanTipMaqLav;
                if (RTML.ActualizarLavavajillas(ATML))
                {
                    res = true;
                }
                else
                {
                    return(res = false);
                }
            }

            if (Pedido.IdModEqDos != null)
            {
                id = Pedido.IdModEqDos.Value;
                AdmModEqDos AMED = RMED.GetEquipoDosificadorByID(id).First();
                AMED.EqDisponibles = AMED.EqDisponibles - Pedido.CanModEqDos;
                if (RMED.ActualizarEquipoDosificador(AMED))
                {
                    res = true;
                }
                else
                {
                    return(res = false);
                }
            }

            if (Pedido.IdPorGalon != null)
            {
                id = Pedido.IdPorGalon.Value;
                AdmPortGalon APG = RPG.GetGaloneraByID(id).First();
                APG.Stock = APG.Stock - Pedido.CanPorGalon;
                if (RPG.ActualizarGalonera(APG))
                {
                    res = true;
                }
                else
                {
                    return(res = false);
                }
            }
            #endregion

            #region consumibles
            if (Pedido.CanCepInBas != null)
            {
                List <AdmCepInBas> ACIB = RCIB.GetAllConsumibles();
                for (int i = 0; i < ACIB.Count(); i++)
                {
                    ACIB[i].Stock = ACIB[i].Stock - Pedido.CanCepInBas;
                    if (RCIB.ActualizarConsumibles(ACIB[i]))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
            }
            #endregion

            #region Quimicos
            if (Pedido.ProdQuim != null)
            {
                RepositoryProdQuim quimico         = new RepositoryProdQuim();
                AdmProdQuim        ProductoQuimico = new AdmProdQuim();
                List <String>      listaQuimicos   = getProductos(Pedido.ProdQuim);

                for (int i = 0; i < getProductos(Pedido.ProdQuim).Count; i++) // Quita el stock que se requiere en el pedido nuevo
                {
                    ProductoQuimico        = quimico.GetQuimicoByName(listaQuimicos[i]).First();
                    ProductoQuimico.Stock -= 1;
                    if (quimico.ActualizarQuimico(ProductoQuimico))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
            }
            #endregion

            #region DosLav
            if (Pedido.DosLav != null)
            {
                AdmDosLav     Dosificador        = new AdmDosLav();
                List <String> listaDosificadores = getProductos(Pedido.DosLav);

                for (int i = 0; i < listaDosificadores.Count; i++) // Quita el stock que se requiere en el pedido nuevo
                {
                    Dosificador        = RDL.GetDosificadoresByName(listaDosificadores[i]).First();
                    Dosificador.Stock -= 1;
                    if (RDL.ActualizarDosificador(Dosificador))
                    {
                        res = true;
                    }
                    else
                    {
                        return(res = false);
                    }
                }
            }
            #endregion

            return(res);
        }