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;
using New_College.Common;
using Microsoft.AspNetCore.Authorization;
using StackExchange.Profiling.Internal;
using Newtonsoft.Json;
using NPOI.SS.Formula.Functions;
namespace New_College.Api.Controllers.Front
{
///
/// PC志愿表管理
///
[Route("api/front/[controller]")]
[ApiController]
public class PcVolunteerController : ControllerBase
{
private readonly IU_VolunteerTableServices _VolunteerTableServices;
private readonly IU_VolunteerTableDetailServices _VolunteerTableDetailServices;
private readonly IUnitOfWork _unitOfWork;
private readonly IT_TbSNeedDataInfoServices _TbSNeedDataInfoServices;
public PcVolunteerController(IU_VolunteerTableServices volunteerTableServices, IU_VolunteerTableDetailServices volunteerTableDetailServices,
IUnitOfWork unitOfWork, IT_TbSNeedDataInfoServices tbSNeedDataInfoServices)
{
_VolunteerTableServices = volunteerTableServices;
_VolunteerTableDetailServices = volunteerTableDetailServices;
_unitOfWork = unitOfWork;
_TbSNeedDataInfoServices = tbSNeedDataInfoServices;
}
///
/// Pc端查询我的志愿列表
///
///
///
[HttpGet("GetPage")]
public async Task>> GetPage([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, " CreateTime desc");
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,
BatchName = c.BatchName,
CreateTime = c.CreateTime,
ModifyTime = c.ModifyTime,
CP = "靠谱99%"
}).ToList();
response.pageCount = pagemodel.pageCount;
response.page = pagemodel.page;
response.PageSize = view.PageSize;
response.dataCount = pagemodel.dataCount;
return new MessageModel>()
{
msg = "获取成功",
success = true,
response = response
};
}
///
/// Pc查询单个志愿表详情信息
///
/// 志愿表Id
///
[HttpGet("Get")]
public async Task> Get([FromQuery] 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 _TbSNeedDataInfoServices.Query(c => SqlFunc.ContainsArray(PlanMajorIds, c.ID));//
var location = planmajordesc.FirstOrDefault().Location;
var majorlist = planmajordesc.Select(c => c.MajorName).ToList();
var universityname = planmajordesc.Select(c => c.UniversityName).Distinct().ToList();
var planmajorcomplist = await _TbSNeedDataInfoServices.Query(c => c.Location == location && SqlFunc.ContainsArray(majorlist, c.MajorName) && 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.BatchName = query.BatchName;
view.CreateTime = query.CreateTime;
view.ModifyTime = query.ModifyTime;
var tableDetailItemsViews = new List();
items.ForEach(s =>
{
var planids = s.PlanMajorIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(ss => long.Parse(ss)).ToList();
var typeinfo = new List();
if (!string.IsNullOrWhiteSpace(s.VolunteerRemark))
{
typeinfo = s.VolunteerRemark.FromJson>();
}
var uitem = new VolunteerTableDetailItemsView()
{
// UniversityId = s.UniversityId,
UniversityName = s.UniversityName,
UniversityCode = s.UniversityCode,
Sort = s.OrderSort,
UniversityId = s.UniversityId,
_211 = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel != null ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel.Contains("211") ? "是" : "否" : "否",
_985 = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel != null ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel.Contains("985") ? "是" : "否" : "否",
_SYL = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel != null ? planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().LnstitutionalLevel.Contains("双一流") ? "是" : "否" : "否",
Ownership = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Ownership.Contains("省") ? "省属" : planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Ownership.Contains("市") ? "市属" : planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Ownership,
AreaName = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Province + "|" + planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().City,
Nature = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().Nature,
Rank = planmajordesc.Where(e => e.UniversityName == s.UniversityName).FirstOrDefault().UniversityRank,
planMajorItems = planmajordesc.Where(ww => planids.Contains(ww.ID)).Select(c => new VolunteerTablePlanMajorItem()
{
fee = c.Fee,
Major = c.MajorName,
MajorCode = c.MajorCode,
// MajorGroup = c.MajorGroup,
MajorRemark = c.Remark,
planCount = int.Parse(c._23Count),
PlanId = c.ID,
AcademicYear = c.AcademicYear,
Sort = s.OrderSort,
SubjectClam = c._23subject,
Percentage = typeinfo.Any() && typeinfo.Count() > 0 ? typeinfo.FirstOrDefault(d => d.planId == c.ID).tage : 0,
Type = typeinfo.Any() && typeinfo.Count() > 0 ? typeinfo.FirstOrDefault(d => d.planId == c.ID).type : 0,
PlanItems = new List()
{
new PlanItem() {
PlanCount=int.Parse(c._22Count),
RankLine=int.Parse(c._22ScoreLine),
Scoreline=int.Parse(c._22Score),
Year="2022"
},
new PlanItem() {
PlanCount=int.Parse(c._21Count),
RankLine=int.Parse(c._21ScoreLine),
Scoreline=int.Parse(c._21Score),
Year="2021"
} }
}).ToList()
};
tableDetailItemsViews.Add(uitem);
});
view.tableDetailItemsViews = tableDetailItemsViews;
return new MessageModel()
{
msg = "获取成功",
success = true,
response = view
};
}
///
/// PC志愿表新增
///
///
///
[HttpPost("Post")]
public async Task> Post([FromBody] VolunteerTableDtoView request)
{
if (request.CustomerId <= 0)
{
return new MessageModel()
{
msg = "用户Id"
};
}
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.OrderByDescending(c => c.CreateTime).FirstOrDefault().OrderSort + 1);
ordersort = (vol.OrderByDescending(c => c.CreateTime).FirstOrDefault().OrderSort + 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,
BatchName = request.BatchName,
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 = c.Sort,
PlanMajorIds = c.PlanMajorIds,
UniversityCode = c.UniversityCode,
UniversityId = c.UniversityId,
UniversityName = c.UniversityName,
VolunteerTableId = id,
VolunteerRemark = JsonConvert.SerializeObject(c.VolunteerRemark)
}).ToList();
itemIds = await _VolunteerTableDetailServices.Add(itemlist);
}
if (id > 0 && itemIds == request.volunteerTableDetailViews.Count() && itemIds > 0)
{
_unitOfWork.CommitTran();
}
else
{
_unitOfWork.RollbackTran();
}
data.success = id > 0;
if (data.success)
{
data.response = id.ObjToString();
data.msg = "添加成功";
}
return data;
}
///
/// Pc修改志愿表
///
///
///
[HttpPut("Put")]
public async Task> Put([FromBody] VolunteerTableDtoView request)
{
var data = new MessageModel();
if (request.VId > 0)
{
var model = await _VolunteerTableServices.QueryById(request.VId);
_unitOfWork.BeginTran();
if (!string.IsNullOrWhiteSpace(request.BatchName)) { model.BatchName = request.BatchName; }
if (!string.IsNullOrWhiteSpace(request.SubjectClaim)) { model.SubjectClaim = request.SubjectClaim; }
if (!string.IsNullOrWhiteSpace(request.Type)) { model.Type = request.Type; }
if (!string.IsNullOrWhiteSpace(request.VolunteerTableName)) { model.VolunteerTableName = request.VolunteerTableName; }
if (request.CustomerId > 0) { model.CustomerId = request.CustomerId; }
if (request.Score > 0) { model.Score = request.Score; }
model.ModifyTime = DateTime.Now;
data.success = await _VolunteerTableServices.Update(model);
//删掉之前的志愿表,更新新的匹配进来
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 = c.Sort,
PlanMajorIds = c.PlanMajorIds,
UniversityCode = c.UniversityCode,
UniversityId = c.UniversityId,
UniversityName = c.UniversityName,
VolunteerRemark = JsonConvert.SerializeObject(c.VolunteerRemark),
VolunteerTableId = request.VId,
}).ToList();
var itemIds = await _VolunteerTableDetailServices.Add(itemlist);
if (itemIds > 0 && data.success)
{
_unitOfWork.CommitTran();
data.msg = "更新成功";
data.response = request?.VId.ObjToString();
}
else
{
_unitOfWork.RollbackTran();
}
}
else
{
return new MessageModel()
{
msg = "VId 必传",
success = false
};
}
return data;
}
///
/// Pc删除志愿表
///
///
///
[HttpDelete("Delete/{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;
}
///
///
///
///
///
[AllowAnonymous]
[HttpGet("downloadpdf")]
public async Task DownloadPdf(string url)
{
var htmlContent = await HtmlHeplerFetcher.GetHtmlContentAsync(url);
// 假设pdfBytes是已存在的PDF文件字节流
byte[] pdfBytes = new HtmlToPdfConverter().ConvertHtmlToPdf(htmlContent);
// 设置响应头,指定Content-Type和文件名
Response.Headers.Add("Content-Disposition", string.Format("attachment; filename={0}.pdf", DateTime.Now.ToString("MMddHHmmssfff")));
Response.ContentType = "application/pdf";
return File(pdfBytes, "application/pdf");
}
}
}