using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using New_College.Model; using New_College.Model.ViewModels; using New_College.IServices; using New_College.Model.Models; using New_College.Services; using System.Linq.Expressions; using New_College.IRepository.UnitOfWork; using New_College.Repository.UnitOfWork; using SqlSugar; namespace New_College.Api.Controllers.Front { /// /// PC志愿表管理 /// [Route("api/front/[controller]/[action]")] [ApiController] public class PcVolunteerController : ControllerBase { private readonly IU_VolunteerTableServices _VolunteerTableServices; private readonly IU_VolunteerTableDetailServices _VolunteerTableDetailServices; private readonly IUnitOfWork _unitOfWork; private readonly ID_PlanMajorDescServices _planMajorDescServices; public PcVolunteerController(IU_VolunteerTableServices volunteerTableServices, IU_VolunteerTableDetailServices volunteerTableDetailServices, IUnitOfWork unitOfWork, ID_PlanMajorDescServices planMajorDescServices) { _VolunteerTableServices = volunteerTableServices; _VolunteerTableDetailServices = volunteerTableDetailServices; _unitOfWork = unitOfWork; _planMajorDescServices = planMajorDescServices; } /// /// Pc端查询我的志愿列表 /// /// /// [HttpGet] public async Task>> Get([FromQuery] VolunteerTableRequestView view) { if (view.CustomerId <= 0) { return new MessageModel>() { msg = "CustomerId 为必传参数" }; } var response = new PageModel(); Expression> exp = Expressionable.Create() .And(c => c.IsDelete == false) .And(c => c.CustomerId == view.CustomerId) .ToExpression(); var pagemodel = await _VolunteerTableServices.QueryPage(exp, view.PageIndex, view.PageSize); response.data = pagemodel.data.Select(c => new VolunteerTableDtoView() { CustomerId = c.CustomerId, Score = c.Score, SubjectClaim = c.SubjectClaim, Type = c.Type, VId = c.Id, VolunteerTableName = c.VolunteerTableName }).ToList(); response.pageCount = pagemodel.pageCount; response.page = pagemodel.page; response.PageSize = view.PageSize; return new MessageModel>() { msg = "获取成功", success = true, response = response }; } /// /// Pc查询单个志愿表详情信息 /// /// 志愿表Id /// [HttpGet("{id}")] public async Task> Get(int id = 0) { if (id <= 0) { return new MessageModel() { msg = "id 为必传参数" }; } var view = new VolunteerTableDetailDtoView(); var query = await _VolunteerTableServices.QueryById(id); var items = await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == id); var PlanMajorIds = new List(); foreach (var item in items) { var ids = item.PlanMajorIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(c => int.Parse(c)).ToList(); PlanMajorIds.AddRange(ids); } var planmajordesc = await _planMajorDescServices.Query(c => SqlFunc.ContainsArray(PlanMajorIds, c.Id));// var location = planmajordesc.FirstOrDefault().Location; var majorlist = planmajordesc.Select(c => c.Major).ToList(); var universityname = planmajordesc.Select(c => c.UniversityName).ToList(); var planmajorcomplist = await _planMajorDescServices.Query(c => c.Location == location && SqlFunc.ContainsArray(majorlist, c.Major) && SqlFunc.ContainsArray(universityname, c.UniversityName));// view.VolunteerTableName = query.VolunteerTableName; view.SubjectClaim = query.SubjectClaim; view.CustomerId = query.CustomerId; view.Score = query.Score; view.Type = query.Type; view.tableDetailItemsViews = items.Select(c => new VolunteerTableDetailItemsView() { UniversityId = c.UniversityId, UniversityName = c.UniversityName, UniversityCode = c.UniversityCode, _211 = planmajordesc.Where(e => e.UId == c.UniversityId).FirstOrDefault()._211, _985 = planmajordesc.Where(e => e.UId == c.UniversityId).FirstOrDefault()._985, _SYL = planmajordesc.Where(e => e.UId == c.UniversityId).FirstOrDefault()._SYL, planMajorItems = planmajordesc.Select(s => new VolunteerTablePlanMajorItem() { fee = s.Free, Major = s.Major, MajorCode = s.MajorCode, MajorGroup = s.MajorGroup, MajorRemark = s.Remark, planCount = s.PlanCount, PlanId = s.Id, SubjectClam = s.SelectSubject, PlanItems = planmajorcomplist.Select(p => new PlanItem() { PlanCount = p.PlanCount, RankLine = p.LowScoreRank, Scoreline = p.LowScore, Year = p.Years.ToString(), }).ToList() }).ToList() }).ToList(); return new MessageModel() { msg = "获取成功", success = true, response = view }; } /// /// PC志愿表新增 /// /// /// [HttpPost] public async Task> Post([FromBody] VolunteerTableDtoView request) { var data = new MessageModel(); int ordersort = 0; if (string.IsNullOrWhiteSpace(request.VolunteerTableName)) { var vol = (await _VolunteerTableServices.Query(c => c.CustomerId == request.CustomerId)); if (vol.Any()) { request.VolunteerTableName = "我的志愿表" + vol.FirstOrDefault().Id + 1; ordersort = vol.FirstOrDefault().Id + 1; } else { request.VolunteerTableName = "我的志愿表01"; ordersort = 1; } } _unitOfWork.BeginTran(); var id = await _VolunteerTableServices.Add(new U_VolunteerTable() { CreateTime = DateTime.Now, CustomerId = request.CustomerId, ModifyTime = DateTime.Now, OrderSort = ordersort, IsDelete = false, SubjectClaim = request.SubjectClaim, Type = request.Type, Score = request.Score, VolunteerTableName = request.VolunteerTableName, }); int itemIds = 0; if (id > 0) { var itemlist = request.volunteerTableDetailViews.Select(c => new U_VolunteerTableDetail() { CreateTime = DateTime.Now, IsDelete = false, ModifyTime = DateTime.Now, OrderSort = 0, PlanMajorIds = c.PlanMajorIds, UniversityCode = c.UniversityCode, UniversityId = c.UniversityId, UniversityName = c.UniversityName, VolunteerTableId = id, }).ToList(); itemIds = await _VolunteerTableDetailServices.Add(itemlist); } if (id > 0 && itemIds == request.volunteerTableDetailViews.Count() && itemIds > 0) { _unitOfWork.BeginTran(); } else { _unitOfWork.RollbackTran(); } data.success = id > 0; if (data.success) { data.response = id.ObjToString(); data.msg = "添加成功"; } return data; } /// /// Pc修改志愿表 /// /// /// [HttpPut] public async Task> Put([FromBody] VolunteerTableDtoView request) { var data = new MessageModel(); if (request.VId > 0) { _unitOfWork.BeginTran(); data.success = await _VolunteerTableServices.Update(request); //删掉之前的志愿表,更新新的匹配进来 var itemids = (await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == request.VId)).Select(c => (object)c.Id).ToArray(); var status = await _VolunteerTableDetailServices.DeleteByIds(itemids); var itemlist = request.volunteerTableDetailViews.Select(c => new U_VolunteerTableDetail() { CreateTime = DateTime.Now, IsDelete = false, ModifyTime = DateTime.Now, OrderSort = 0, PlanMajorIds = c.PlanMajorIds, UniversityCode = c.UniversityCode, UniversityId = c.UniversityId, UniversityName = c.UniversityName, VolunteerTableId = request.VId, }).ToList(); var itemIds = await _VolunteerTableDetailServices.Add(itemlist); if (status && itemIds > 0 && data.success) { _unitOfWork.CommitTran(); data.msg = "更新成功"; data.response = request?.VId.ObjToString(); } else { _unitOfWork.RollbackTran(); } } return data; } /// /// Pc删除志愿表 /// /// /// [HttpDelete("{id}")] public async Task> Delete(int id = 0) { var data = new MessageModel(); if (id > 0) { var detail = await _VolunteerTableServices.QueryById(id); detail.IsDelete = true; if (detail != null) { _unitOfWork.BeginTran(); data.success = await _VolunteerTableServices.Update(detail); var itemids = (await _VolunteerTableDetailServices.Query(c => c.VolunteerTableId == id)).Select(c => (object)c.Id).ToArray(); var status = await _VolunteerTableDetailServices.DeleteByIds(itemids); if (status && data.success) { _unitOfWork.CommitTran(); } else { _unitOfWork.RollbackTran(); return new MessageModel() { msg = "删除失败" }; }; } if (data.success) { data.msg = "删除成功"; data.response = detail?.Id.ObjToString(); } } return data; } } }