using Dlhis.Canteen.Order.Request; using Dlhis.Canteen.Order.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Canteen.Entities; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Core.DataAccess.Dto; using Kurisu.Core.User.Abstractions; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; using Mapster; namespace Dlhis.Canteen.Order.Services.Implements { public class MenuDishesService : IMenuDishesService { private readonly IDbContext _dbContext; private readonly ICurrentUser _currentUser; public MenuDishesService(IDbContext dbContext, ICurrentUser currentUser) { _dbContext = dbContext; _currentUser = currentUser; } public async Task> GetMenuAsync(GetMenuRequest request) { var page = await _dbContext.Queryable() .LeftJoin((x,place) => x.PlaceCode == place.Code) .WhereIF(!request.Factory.IsEmpty(),x => x.Factory == request.Factory) .WhereIF(request.PlaceCode.HasValue, x => request.PlaceCode == x.PlaceCode) .WhereIF(!request.Search.IsEmpty(),x => x.Name.Contains(request.Search)) .Select((x,place) => new GetMenuResponse { ShiftTypesSrt = x.ShiftTypes.ToString(), PlaceName = place.Name, },true) .ToPageListAsync(request); return page; } public async Task SaveMenuAsync(SaveMenuRequest request) { var place = await _dbContext.Queryable() .FirstAsync(x => x.Code == request.PlaceCode); place.ThrowIfNull($"{request.PlaceCode}:该营业点不存在!"); if (!request.Id.HasValue) { var entity = request.Adapt(); entity.Code = Guid.NewGuid(); await _dbContext.InsertAsync(entity); } else { var entity = await _dbContext.Queryable() .Where(x => x.Id == request.Id).FirstAsync(); request.Adapt(entity); await _dbContext.UpdateAsync(entity); } } public async Task> GetDishesAsync(GetDishesRequest request) { var page = await _dbContext.Queryable() .LeftJoin((x,menu)=>x.MenuCode == menu.Code) .WhereIF(request.MenuCode.HasValue, x => request.MenuCode == x.MenuCode) .WhereIF(!request.Search.IsEmpty(),x => x.Name.Contains(request.Search)) .Select((x,menu) => new GetDishesResponse { MenuName = menu.Name, },true) .ToPageListAsync(request); return page; } public async Task SaveDishesAsync(SaveDishesRequest request) { var menu = await _dbContext.Queryable() .FirstAsync(x => x.Code == request.MenuCode); menu.ThrowIfNull($"{request.MenuCode}:该菜单不存在!"); if (!request.Id.HasValue) { var dishers = request.Adapt(); dishers.Code = Guid.NewGuid(); await _dbContext.InsertAsync(dishers); } else { var entity = await _dbContext.Queryable() .Where(x => x.Id == request.Id).FirstAsync(); request.Adapt(entity); await _dbContext.UpdateAsync(entity); } } } }