using Ewide.Application.Entity; using Ewide.Application.Service.HouseProjectInfo.Dto; using Ewide.Core; using Ewide.Core.Service; using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; using Furion.DependencyInjection; using Furion.DynamicApiController; using Mapster; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ewide.Application.Service.HouseProjectInfo { /// /// 项目管理相关服务 /// [ApiDescriptionSettings(Name = "HouseProjectInfo", Order = 170)] public class HouseProjectInfoService : IHouseProjectInfoService, ITransient, IDynamicApiController { private readonly IRepository _houseProjectInfoRep; public HouseProjectInfoService(IRepository houseProjectInfoRep) { _houseProjectInfoRep = houseProjectInfoRep; } /// /// 添加项目 /// /// /// [HttpPost("/houseProjectInfo/add")] public async Task AddProject(AddProjectInput input) { await _houseProjectInfoRep.InsertNowAsync(input.Adapt()); } /// /// 删除项目 /// /// /// [HttpPost("/houseProjectInfo/delete")] public async Task DeleteProject(DeleteProjectInput input) { var project = _houseProjectInfoRep.FirstOrDefault(p => p.Id == input.Id) ; await project.DeleteNowAsync(); } /// /// 编辑项目 /// /// /// [HttpPost("/houseProjectInfo/edit")] public async Task UpdateProject(UpdateProjectInput input) { var project = input.Adapt(); await project.UpdateExcludeAsync(new[] { nameof(BsHouseProjectInfo.AreaId)}, true); } /// /// 通过ID获取项目 /// /// /// [HttpGet("/houseProjectInfo/detailById")] public async Task GetProjectById([Required] string id) { return await _houseProjectInfoRep.DetachedEntities.FirstOrDefaultAsync(p => p.Id == id); } /// /// 分页查询 /// /// /// [HttpPost("/houseProjectInfo/page")] public async Task QueryProjectPageList([FromBody] HouseProjectInfoInput input) { var areaID = !string.IsNullOrEmpty(input.AreaId); var areaCodeRep = Db.GetRepository(); var projects = await _houseProjectInfoRep.DetachedEntities .Join(areaCodeRep.DetachedEntities, p => p.AreaId, a => a.Code, (p, a) => new { p, AreaName = a.Name }) .Where(areaID, x => x.p.AreaId == input.AreaId) .Select(x => new { x.p.Id, x.p.Name, x.p.Note, x.p.Sort, x.p.AreaId, x.AreaName, x.p.Type }.Adapt()).ToPagedListAsync(input.PageNo, input.PageSize); return XnPageResult.PageResult(projects); } /// /// /// /// /// [HttpGet("/houseProjectInfo/detail")] public async Task GetProject([FromQuery] QueryProjectInput input) { var user = await _houseProjectInfoRep.DetachedEntities.FirstOrDefaultAsync(p => p.Id == input.Id); var userDto = user.Adapt(); return userDto; } } }