public async Task <IActionResult> Edit(int id, [Bind("Idempresa,Idcuenta,Codcuentacatalogo")] Catalogodecuenta catalogodecuenta)
        {
            if (id != catalogodecuenta.Idempresa)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(catalogodecuenta);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CatalogodecuentaExists(catalogodecuenta.Idempresa))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["Idcuenta"]  = new SelectList(_context.Cuenta, "Idcuenta", "Nomcuenta", catalogodecuenta.Idcuenta);
            ViewData["Idempresa"] = new SelectList(_context.Empresa, "Idempresa", "Nomempresa", catalogodecuenta.Idempresa);
            return(View(catalogodecuenta));
        }
        public List <Catalogodecuenta> InsertarCuentasDeTotalCatalogo(int idEmpresa)
        {
            List <Catalogodecuenta> catalogodecuentas = new List <Catalogodecuenta>();
            var cuentasBase = from s in _context.Cuenta select s;

            cuentasBase = cuentasBase.Where(s => s.Nomcuenta.Equals("TOTAL ACTIVOS CORRIENTES") || s.Nomcuenta.Equals("TOTAL ACTIVOS NO CORRIENTES") ||
                                            s.Nomcuenta.Equals("TOTAL PASIVOS CORRIENTES") || s.Nomcuenta.Equals("TOTAL PASIVOS NO CORRIENTES") || s.Nomcuenta.Equals("TOTAL PATRIMONIO") ||
                                            s.Nomcuenta.Equals("TOTAL ACTIVO") || s.Nomcuenta.Equals("TOTAL PASIVO MAS PATRIMONIO"));
            foreach (var cuentaB in cuentasBase)
            {
                Catalogodecuenta cc = new Catalogodecuenta
                {
                    Idcuenta          = cuentaB.Idcuenta,
                    Idempresa         = idEmpresa,
                    Codcuentacatalogo = "0"    //Para identificar las cuentas de totales del balance el codcatalogo = 0
                };

                var catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                if (!(catalogoBase > 0))
                {
                    catalogodecuentas.Add(cc);
                }
            }
            return(catalogodecuentas);
        }
        public async Task <IActionResult> Create([Bind("Idempresa,Idcuenta,Codcuentacatalogo")] Catalogodecuenta catalogodecuenta)
        {
            if (ModelState.IsValid)
            {
                _context.Add(catalogodecuenta);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["Idcuenta"]  = new SelectList(_context.Cuenta, "Idcuenta", "Nomcuenta", catalogodecuenta.Idcuenta);
            ViewData["Idempresa"] = new SelectList(_context.Empresa, "Idempresa", "Nomempresa", catalogodecuenta.Idempresa);
            return(View(catalogodecuenta));
        }
        /*ArmarCatalago: Devuelve una lista del catalogo de la empresa armado*/
        public async Task <List <Catalogodecuenta> > ArmarCatalago(int idEmpresa, List <CuentaViewModel> lstCV)
        {
            List <Cuenta> lstCB = await cuentasController.ConsultarCuentas();

            List <Catalogodecuenta> catalogodecuentas = new List <Catalogodecuenta>();

            foreach (var cuentaV in lstCV)
            {
                List <Cuenta> ctaBase = _context.Cuenta.Where(cB => cB.Nomcuenta.Equals(cuentaV.nombre)).Include(i => i.IdtipocuentaNavigation).ToList();
                if (ctaBase.Count > 1)
                {
                    string val = "";
                    string cod = cuentaV.codigo.Replace(".", "");
                    int    identificadorCuenta = 0;

                    if (cod.Length > 1)
                    {
                        val = cod.Substring(0, 2);
                    }
                    else
                    {
                        val = cod.Substring(0, 1);
                    }

                    int catalogoBase    = 0;
                    Catalogodecuenta cc = new Catalogodecuenta();

                    switch (val)
                    {
                    case "1":
                        identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("ACTIVO")).First().Idcuenta;
                        cc = new Catalogodecuenta
                        {
                            Idcuenta          = identificadorCuenta,
                            Idempresa         = idEmpresa,
                            Codcuentacatalogo = cuentaV.codigo
                        };
                        catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                        if (!(catalogoBase > 0))
                        {
                            catalogodecuentas.Add(cc);
                        }
                        break;

                    case "11":
                        identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("ACTIVO CORRIENTE")).First().Idcuenta;
                        cc = new Catalogodecuenta
                        {
                            Idcuenta          = identificadorCuenta,
                            Idempresa         = idEmpresa,
                            Codcuentacatalogo = cuentaV.codigo
                        };
                        catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                        if (!(catalogoBase > 0))
                        {
                            catalogodecuentas.Add(cc);
                        }
                        break;

                    case "12":
                        identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("ACTIVO NO CORRIENTE")).First().Idcuenta;
                        cc = new Catalogodecuenta
                        {
                            Idcuenta          = identificadorCuenta,
                            Idempresa         = idEmpresa,
                            Codcuentacatalogo = cuentaV.codigo
                        };
                        catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                        if (!(catalogoBase > 0))
                        {
                            catalogodecuentas.Add(cc);
                        }
                        break;

                    case "2":
                        identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("PASIVO")).First().Idcuenta;
                        cc = new Catalogodecuenta
                        {
                            Idcuenta          = identificadorCuenta,
                            Idempresa         = idEmpresa,
                            Codcuentacatalogo = cuentaV.codigo
                        };
                        catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                        if (!(catalogoBase > 0))
                        {
                            catalogodecuentas.Add(cc);
                        }
                        break;

                    case "21":
                        identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("PASIVO CORRIENTE")).First().Idcuenta;
                        cc = new Catalogodecuenta
                        {
                            Idcuenta          = identificadorCuenta,
                            Idempresa         = idEmpresa,
                            Codcuentacatalogo = cuentaV.codigo
                        };
                        catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                        if (!(catalogoBase > 0))
                        {
                            catalogodecuentas.Add(cc);
                        }
                        break;

                    case "22":
                        identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("PASIVO NO CORRIENTE")).First().Idcuenta;
                        cc = new Catalogodecuenta
                        {
                            Idcuenta          = identificadorCuenta,
                            Idempresa         = idEmpresa,
                            Codcuentacatalogo = cuentaV.codigo
                        };
                        catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                        if (!(catalogoBase > 0))
                        {
                            catalogodecuentas.Add(cc);
                        }
                        break;

                    case "3":
                        identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("PATRIMONIO")).First().Idcuenta;
                        cc = new Catalogodecuenta
                        {
                            Idcuenta          = identificadorCuenta,
                            Idempresa         = idEmpresa,
                            Codcuentacatalogo = cuentaV.codigo
                        };
                        catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                        if (!(catalogoBase > 0))
                        {
                            catalogodecuentas.Add(cc);
                        }
                        break;

                    case "4":
                        identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("GASTOS")).First().Idcuenta;
                        cc = new Catalogodecuenta
                        {
                            Idcuenta          = identificadorCuenta,
                            Idempresa         = idEmpresa,
                            Codcuentacatalogo = cuentaV.codigo
                        };
                        catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                        if (!(catalogoBase > 0))
                        {
                            catalogodecuentas.Add(cc);
                        }
                        break;

                    case "5":
                        identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("INGRESOS")).First().Idcuenta;
                        cc = new Catalogodecuenta
                        {
                            Idcuenta          = identificadorCuenta,
                            Idempresa         = idEmpresa,
                            Codcuentacatalogo = cuentaV.codigo
                        };
                        catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                        if (!(catalogoBase > 0))
                        {
                            catalogodecuentas.Add(cc);
                        }
                        break;

                    default:
                        if (cod.StartsWith("3"))
                        {
                            identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("PATRIMONIO")).First().Idcuenta;
                            cc = new Catalogodecuenta
                            {
                                Idcuenta          = identificadorCuenta,
                                Idempresa         = idEmpresa,
                                Codcuentacatalogo = cuentaV.codigo
                            };
                            catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                            if (!(catalogoBase > 0))
                            {
                                catalogodecuentas.Add(cc);
                            }
                        }
                        else if (cod.StartsWith("4"))
                        {
                            identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("GASTOS")).First().Idcuenta;
                            cc = new Catalogodecuenta
                            {
                                Idcuenta          = identificadorCuenta,
                                Idempresa         = idEmpresa,
                                Codcuentacatalogo = cuentaV.codigo
                            };
                            catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                            if (!(catalogoBase > 0))
                            {
                                catalogodecuentas.Add(cc);
                            }
                        }
                        else if (cod.StartsWith("5"))
                        {
                            identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("INGRESOS")).First().Idcuenta;
                            cc = new Catalogodecuenta
                            {
                                Idcuenta          = identificadorCuenta,
                                Idempresa         = idEmpresa,
                                Codcuentacatalogo = cuentaV.codigo
                            };
                            catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                            if (!(catalogoBase > 0))
                            {
                                catalogodecuentas.Add(cc);
                            }
                        }
                        else
                        {
                            identificadorCuenta = ctaBase.Where(cta => cta.IdtipocuentaNavigation.Nomtipocuenta.Equals("OTROS")).First().Idcuenta;
                            cc = new Catalogodecuenta
                            {
                                Idcuenta          = identificadorCuenta,
                                Idempresa         = idEmpresa,
                                Codcuentacatalogo = cuentaV.codigo
                            };
                            catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                            if (!(catalogoBase > 0))
                            {
                                catalogodecuentas.Add(cc);
                            }
                        }
                        break;
                    }
                }
                else if (ctaBase.Count == 1)
                {
                    Catalogodecuenta cc = new Catalogodecuenta
                    {
                        Idcuenta          = ctaBase.First().Idcuenta,
                        Idempresa         = idEmpresa,
                        Codcuentacatalogo = cuentaV.codigo
                    };
                    var catalogoBase = _context.Catalogodecuenta.Count(a => a.Idcuenta == cc.Idcuenta && a.Idempresa == cc.Idempresa);
                    if (!(catalogoBase > 0))
                    {
                        catalogodecuentas.Add(cc);
                    }
                }
            }
            int idDefault = _context.Cuenta.Where(d => d.Nomcuenta.Equals("Default")).FirstOrDefault().Idcuenta;
            var cb        = _context.Catalogodecuenta.Count(a => a.Idcuenta == idDefault && a.Idempresa == idEmpresa);

            if (!(cb > 0))
            {
                catalogodecuentas.Add(new Catalogodecuenta {
                    Idcuenta          = idDefault,
                    Idempresa         = idEmpresa,
                    Codcuentacatalogo = "D"
                });
            }
            catalogodecuentas = catalogodecuentas.Concat(InsertarCuentasDeTotalCatalogo(idEmpresa)).ToList();
            return(catalogodecuentas);
        }