using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Yi.Framework.Interface; using Yi.Framework.Model.Models; namespace Yi.Framework.Service { public partial class MenuService:BaseService, IMenuService { public async Task AddChildrenMenu(int menu_id, menu _children) { var menu_data = await _Db.Set().Include(u => u.children).Where(u => u.id == menu_id).FirstOrDefaultAsync(); _children.is_top = (short)Common.Enum.TopFlagEnum.Children; menu_data.children.Add(_children); await UpdateAsync(menu_data); return menu_data; } public async Task DelListByUpdateAsync(List _ids) { var menuList = await GetEntitiesAsync(u=>_ids.Contains(u.id)); menuList.ToList().ForEach(u => u.is_delete = (short)Common.Enum.DelFlagEnum.Deleted); return await UpdateListAsync(menuList); } public async Task> GetAllEntitiesTrueAsync() { return await GetEntitiesAsync(u=> u.is_delete == (short)Common.Enum.DelFlagEnum.Normal); } public async Task> GetChildrenByMenu(menu _menu) { var menu_data = await GetEntity(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.DelFlagEnum.Normal); var childrenList = menu_data.children.ToList(); return childrenList; } public async Task> GetChildrenMenu(menu _menu) { var menu= await _Db.Set().Include(u => u.children).Include(u=>u.mould) .Where(u =>u.id==_menu.id&& u.is_delete == (short)Common.Enum.DelFlagEnum.Normal&& u.is_top == (short)Common.Enum.TopFlagEnum.Children ) .FirstOrDefaultAsync(); var childrenList = menu.children.ToList(); return childrenList; } public async Task> GetMenuMould() { var menuList= await _Db.Set().Include(u => u.children).Include(u => u.mould) .Where(u => u.is_delete == (short)Common.Enum.DelFlagEnum.Normal ) .ToListAsync(); return menuList; } public async Task GetMenuMouldByMenu(menu _menu) { var menu_data = await _Db.Set().Include(u => u.children).Include(u=>u.mould) .Where(u=>u.id==_menu.id&& u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync(); return menu_data; } public async Task GetMouldByMenu(menu _menu) { var menu_data =await _Db.Set().Include(u => u.mould) .Where(u => u.id == _menu.id & u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync(); return menu_data.mould; } public async Task> GetTopMenu() { var menu_data= await _Db.Set().Include(u => u.children).Include(u=>u.mould) .Where(u =>u.is_delete == (short)Common.Enum.DelFlagEnum.Normal && u.is_top == (short)Common.Enum.TopFlagEnum.Top) .ToListAsync(); return TopMenuBuild(menu_data); } private List TopMenuBuild(List menu_data) { for(int i = menu_data.Count()-1; i >=0; i--) { if(menu_data[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted) { menu_data.Remove(menu_data[i]); } else if(menu_data[i].children != null) { menu_data[i].children= TopMenuBuild(menu_data[i].children.ToList()); } } return menu_data; } public async Task SetMouldByMenu(int mouldId, int menuId) { var menu_data = await GetEntity(u => u.id == menuId); var mould_data = await _Db.Set().Where(u => u.id==mouldId).FirstOrDefaultAsync(); menu_data.mould = mould_data; return await UpdateAsync(menu_data); } } }