Exemple #1
0
        public async Task <ActionResult <IEnumerable <Sys_Cog_MenuCom> > > r2AddDataModel(MenuCongtyOp options)
        {
            try
            {
                RequestToken token     = CommonData.GetDataFromToken(User);
                var          menuThree = await _context.Sys_Dm_Menu.FindAsync(options.Id);

                var menuComThree = _context.Sys_Cog_MenuCom.Count(x => x.MenuId == menuThree.Id && x.CompanyId == options.CompanyId);
                if (menuComThree == 0)
                {
                    var menuTwo = await _context.Sys_Dm_Menu.FindAsync(menuThree.ParentId);

                    var menuComTwo = _context.Sys_Cog_MenuCom.Count(x => x.MenuId == menuThree.ParentId && x.CompanyId == options.CompanyId);
                    if (menuComTwo == 0)
                    {
                        var menuOne = await _context.Sys_Dm_Menu.FindAsync(menuTwo.ParentId);

                        var menuComOne = _context.Sys_Cog_MenuCom.Count(x => x.MenuId == menuTwo.ParentId && x.CompanyId == options.CompanyId);
                        if (menuComOne == 0)
                        {
                            Sys_Cog_MenuCom objOne = new Sys_Cog_MenuCom();
                            objOne.MenuId       = menuOne.Id;
                            objOne.CompanyId    = options.CompanyId;
                            objOne.IsActive     = true;
                            objOne.ParentId     = null;
                            objOne.UserUpdateId = token.UserID;
                            objOne.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuCom.Add(objOne);
                            Sys_Cog_MenuCom objTwo = new Sys_Cog_MenuCom();
                            objTwo.MenuId       = menuTwo.Id;
                            objTwo.CompanyId    = options.CompanyId;
                            objTwo.IsActive     = true;
                            objTwo.ParentId     = menuOne.Id;
                            objTwo.UserUpdateId = token.UserID;
                            objTwo.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuCom.Add(objTwo);
                            Sys_Cog_MenuCom objThree = new Sys_Cog_MenuCom();
                            objThree.MenuId       = options.Id;
                            objThree.CompanyId    = options.CompanyId;
                            objThree.IsActive     = true;
                            objThree.ParentId     = menuTwo.Id;
                            objThree.UserUpdateId = token.UserID;
                            objThree.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuCom.Add(objThree);
                        }
                        else
                        {
                            Sys_Cog_MenuCom objTwo = new Sys_Cog_MenuCom();
                            objTwo.MenuId       = menuTwo.Id;
                            objTwo.CompanyId    = options.CompanyId;
                            objTwo.IsActive     = true;
                            objTwo.ParentId     = menuOne.Id;
                            objTwo.UserUpdateId = token.UserID;
                            objTwo.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuCom.Add(objTwo);
                            Sys_Cog_MenuCom objThree = new Sys_Cog_MenuCom();
                            objThree.MenuId       = options.Id;
                            objThree.CompanyId    = options.CompanyId;
                            objThree.ParentId     = menuTwo.Id;
                            objThree.IsActive     = true;
                            objThree.UserUpdateId = token.UserID;
                            objThree.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuCom.Add(objThree);
                        }
                    }
                    else
                    {
                        var menuComTwoParent = await _context.Sys_Cog_MenuCom.FirstOrDefaultAsync(x => x.MenuId == menuThree.ParentId && x.CompanyId == options.CompanyId);

                        Sys_Cog_MenuCom objThree = new Sys_Cog_MenuCom();
                        objThree.MenuId       = options.Id;
                        objThree.CompanyId    = options.CompanyId;
                        objThree.IsActive     = true;
                        objThree.ParentId     = menuTwo.Id;
                        objThree.UserUpdateId = token.UserID;
                        objThree.DateUpdate   = DateTime.Now;
                        _context.Sys_Cog_MenuCom.Add(objThree);
                        menuComTwoParent.IsActive = true;
                    }
                }
                else
                {
                    var menuCome = await _context.Sys_Cog_MenuCom.FirstOrDefaultAsync(x => x.MenuId == options.Id && x.CompanyId == options.CompanyId);

                    var menuComTwoParent = await _context.Sys_Cog_MenuCom.FirstOrDefaultAsync(x => x.MenuId == menuThree.ParentId && x.CompanyId == options.CompanyId);

                    if (options.IsActive == false)
                    {
                        var rmmenuDeps = _context.Sys_Cog_MenuDep.Where(x => x.MenuId == options.Id && x.CompanyId == options.CompanyId).ToList(); // xóa menu phòng

                        if (_context.Sys_Cog_MenuCom.Count(x => x.ParentId == menuThree.ParentId && x.CompanyId == options.CompanyId && x.IsActive == true && x.MenuId != options.Id) == 0)
                        {
                            menuComTwoParent.IsActive = false;
                        }
                        foreach (var item in rmmenuDeps)
                        {
                            item.IsActive = false;
                            var menuDepParent = await _context.Sys_Cog_MenuDep.FirstOrDefaultAsync(x => x.MenuId == item.ParentId && x.CompanyId == item.CompanyId && x.DepartmentId == item.DepartmentId);

                            if (_context.Sys_Cog_MenuDep.Count(x => x.ParentId == item.ParentId && x.CompanyId == item.CompanyId && x.IsActive == true && x.MenuId != item.MenuId) == 0)
                            {
                                menuDepParent.IsActive = false;
                            }
                            var rmmenuNests = _context.Sys_Cog_MenuNest.Where(x => x.MenuId == options.Id && x.CompanyId == options.CompanyId && x.ParentDepartmentId == item.DepartmentId).ToList(); // xóa menu phòng
                            foreach (var ntem in rmmenuNests)
                            {
                                ntem.IsActive = false;
                            }
                        }
                        menuCome.IsActive     = false;
                        menuCome.DateUpdate   = DateTime.Now;
                        menuCome.UserUpdateId = token.UserID;
                    }
                    else
                    {
                        if (_context.Sys_Cog_MenuCom.Count(x => x.ParentId == menuThree.ParentId && x.CompanyId == options.CompanyId && x.IsActive == true) == 0)
                        {
                            menuComTwoParent.IsActive = true;
                        }
                        menuCome.IsActive     = true;
                        menuCome.DateUpdate   = DateTime.Now;
                        menuCome.UserUpdateId = token.UserID;
                    }
                }
                await _context.SaveChangesAsync();

                return(new ObjectResult(new { error = 0 }));
            }
            catch (Exception ez)
            {
                return(new ObjectResult(new { error = 1 }));
            }
        }
        public async Task <ActionResult <IEnumerable <Sys_Cog_MenuDep> > > r2AddDataModelDepartment(MenuCongtyOp options)
        {
            try
            {
                var userId    = Convert.ToInt32(User.Claims.First(c => c.Type == "UserId").Value);
                var menuThree = await _context.Sys_Dm_Menu.FindAsync(options.Id);

                var menuComThree = _context.Sys_Cog_MenuDep.Count(x => x.MenuId == menuThree.Id && x.CompanyId == options.CompanyId && x.DepartmentId == options.DepartmentId);
                if (menuComThree == 0)
                {
                    var menuTwo = await _context.Sys_Dm_Menu.FindAsync(menuThree.ParentId);

                    var menuComTwo = _context.Sys_Cog_MenuDep.Count(x => x.MenuId == menuThree.ParentId && x.CompanyId == options.CompanyId && x.DepartmentId == options.DepartmentId);
                    if (menuComTwo == 0)
                    {
                        var menuOne = await _context.Sys_Dm_Menu.FindAsync(menuTwo.ParentId);

                        var menuComOne = _context.Sys_Cog_MenuDep.Count(x => x.MenuId == menuTwo.ParentId && x.CompanyId == options.CompanyId && x.DepartmentId == options.DepartmentId);
                        if (menuComOne == 0)
                        {
                            Sys_Cog_MenuDep objOne = new Sys_Cog_MenuDep();
                            objOne.MenuId       = menuOne.Id;
                            objOne.CompanyId    = options.CompanyId;
                            objOne.IsActive     = true;
                            objOne.ParentId     = null;
                            objOne.DepartmentId = options.DepartmentId;
                            objOne.UserUpdateId = userId;
                            objOne.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuDep.Add(objOne);
                            Sys_Cog_MenuDep objTwo = new Sys_Cog_MenuDep();
                            objTwo.MenuId       = menuTwo.Id;
                            objTwo.CompanyId    = options.CompanyId;
                            objTwo.IsActive     = true;
                            objTwo.ParentId     = menuOne.Id;
                            objTwo.DepartmentId = options.DepartmentId;
                            objTwo.UserUpdateId = userId;
                            objTwo.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuDep.Add(objTwo);
                            Sys_Cog_MenuDep objThree = new Sys_Cog_MenuDep();
                            objThree.MenuId       = options.Id;
                            objThree.CompanyId    = options.CompanyId;
                            objThree.IsActive     = true;
                            objThree.ParentId     = menuTwo.Id;
                            objThree.DepartmentId = options.DepartmentId;
                            objThree.UserUpdateId = userId;
                            objThree.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuDep.Add(objThree);
                        }
                        else
                        {
                            Sys_Cog_MenuDep objTwo = new Sys_Cog_MenuDep();
                            objTwo.MenuId       = menuTwo.Id;
                            objTwo.CompanyId    = options.CompanyId;
                            objTwo.IsActive     = true;
                            objTwo.ParentId     = menuOne.Id;
                            objTwo.DepartmentId = options.DepartmentId;
                            objTwo.UserUpdateId = userId;
                            objTwo.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuDep.Add(objTwo);
                            Sys_Cog_MenuDep objThree = new Sys_Cog_MenuDep();
                            objThree.MenuId       = options.Id;
                            objThree.CompanyId    = options.CompanyId;
                            objThree.ParentId     = menuTwo.Id;
                            objThree.IsActive     = true;
                            objThree.DepartmentId = options.DepartmentId;
                            objThree.UserUpdateId = userId;
                            objThree.DateUpdate   = DateTime.Now;
                            _context.Sys_Cog_MenuDep.Add(objThree);
                        }
                    }
                    else
                    {
                        var menuComTwoParent = await _context.Sys_Cog_MenuDep.FirstOrDefaultAsync(x => x.MenuId == menuThree.ParentId && x.CompanyId == options.CompanyId && x.DepartmentId == options.DepartmentId);

                        Sys_Cog_MenuDep objThree = new Sys_Cog_MenuDep();
                        objThree.MenuId       = options.Id;
                        objThree.CompanyId    = options.CompanyId;
                        objThree.IsActive     = true;
                        objThree.ParentId     = menuTwo.Id;
                        objThree.DepartmentId = options.DepartmentId;
                        objThree.UserUpdateId = userId;
                        objThree.DateUpdate   = DateTime.Now;
                        _context.Sys_Cog_MenuDep.Add(objThree);
                        menuComTwoParent.IsActive = true;
                    }
                }
                else
                {
                    var menuCome = await _context.Sys_Cog_MenuDep.FirstOrDefaultAsync(x => x.MenuId == options.Id && x.CompanyId == options.CompanyId && x.DepartmentId == options.DepartmentId);

                    var menuComTwoParent = await _context.Sys_Cog_MenuDep.FirstOrDefaultAsync(x => x.MenuId == menuThree.ParentId && x.CompanyId == options.CompanyId && x.DepartmentId == options.DepartmentId);

                    if (options.IsActive == false)
                    {
                        var rmmenuNest = _context.Sys_Cog_MenuNest.Where(x => x.MenuId == options.Id && x.CompanyId == options.CompanyId && x.ParentDepartmentId == options.DepartmentId); // xóa menu tổ
                        if (_context.Sys_Cog_MenuDep.Count(x => x.ParentId == menuThree.ParentId && x.CompanyId == options.CompanyId && x.IsActive == true && x.MenuId != options.Id && x.DepartmentId == options.DepartmentId) == 0)
                        {
                            menuComTwoParent.IsActive = false;
                        }
                        menuCome.IsActive = false;
                        foreach (var item in rmmenuNest)
                        {
                            item.IsActive = false;
                        }
                        menuCome.UserUpdateId = userId;
                        menuCome.DateUpdate   = DateTime.Now;
                    }
                    else
                    {
                        if (menuComTwoParent.IsActive == false)
                        {
                            menuComTwoParent.IsActive = true;
                        }
                        menuCome.IsActive     = true;
                        menuCome.UserUpdateId = userId;
                        menuCome.DateUpdate   = DateTime.Now;
                    }
                }
                await _context.SaveChangesAsync();

                return(new ObjectResult(new { error = 0 }));
            }
            catch (Exception)
            {
                return(new ObjectResult(new { error = 1 }));
            }
        }