|
|
|
@ -1,10 +1,16 @@
|
|
|
|
|
using Infrastructure.Data;
|
|
|
|
|
using Infrastructure.Extensions;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Newtonsoft.Json.Serialization;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel.DataAnnotations;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using TeacherExt.Entities;
|
|
|
|
|
using TeacherExt.Models;
|
|
|
|
|
|
|
|
|
@ -55,18 +61,18 @@ namespace TeacherExt.Controllers
|
|
|
|
|
|
|
|
|
|
[HttpGet]
|
|
|
|
|
[Route("/")]
|
|
|
|
|
public IActionResult Index(int bureau_id, string person_name, int pageNumber = 1, int pageSize = 20)
|
|
|
|
|
public IActionResult Index(QueryTeacherModel model)
|
|
|
|
|
{
|
|
|
|
|
var personQuery = this._personRepo.ReadOnlyTable();
|
|
|
|
|
var organQuery = this._organizationRepo.ReadOnlyTable();
|
|
|
|
|
if (!string.IsNullOrEmpty(person_name))
|
|
|
|
|
if (!string.IsNullOrEmpty(model.person_name))
|
|
|
|
|
{
|
|
|
|
|
personQuery = personQuery.Where(o => o.RealName.Contains(person_name));
|
|
|
|
|
personQuery = personQuery.Where(o => o.RealName.Contains(model.person_name));
|
|
|
|
|
}
|
|
|
|
|
var organQuery = this._organizationRepo.ReadOnlyTable();
|
|
|
|
|
var query = from person in personQuery
|
|
|
|
|
join organ in organQuery on person.BureauId equals organ.Id
|
|
|
|
|
join organ2 in organQuery on person.OrganId equals organ2.Id
|
|
|
|
|
where (person.IsUsed && person.BureauId == bureau_id)
|
|
|
|
|
where (person.IsUsed && person.BureauId == model.bureau_id)
|
|
|
|
|
orderby person.BureauId,person.CreateAt
|
|
|
|
|
select new ListItem
|
|
|
|
|
{
|
|
|
|
@ -78,35 +84,94 @@ namespace TeacherExt.Controllers
|
|
|
|
|
org_name = organ2.Name,
|
|
|
|
|
person_id =person.Id,
|
|
|
|
|
};
|
|
|
|
|
if (!string.IsNullOrEmpty(person_name))
|
|
|
|
|
{
|
|
|
|
|
query.Where(o => o.person_name.Contains(person_name));
|
|
|
|
|
}
|
|
|
|
|
var count = query.Count();
|
|
|
|
|
var list = query
|
|
|
|
|
.Skip(pageSize * (pageNumber - 1))
|
|
|
|
|
.Take(pageSize)
|
|
|
|
|
.Skip(model.PageSize * (model.PageNumber - 1))
|
|
|
|
|
.Take(model.PageSize)
|
|
|
|
|
.ToList();
|
|
|
|
|
var nations = this.GetItems("ETHNIC_GROUP");
|
|
|
|
|
foreach (var item in list)
|
|
|
|
|
{
|
|
|
|
|
item.nation_name = nations.FirstOrDefault(o => o.Code == item.nation)?.Remark;
|
|
|
|
|
}
|
|
|
|
|
var model = new
|
|
|
|
|
model.TotalRow = count;
|
|
|
|
|
model.List.AddRange(list);
|
|
|
|
|
if (!model.HeaderSelectList.Any())
|
|
|
|
|
{
|
|
|
|
|
List = list,
|
|
|
|
|
PageNumber = pageNumber,
|
|
|
|
|
PageSize = pageSize,
|
|
|
|
|
TotalRow = count
|
|
|
|
|
};
|
|
|
|
|
return Json(model);
|
|
|
|
|
////return Json(this._directoryRepo.ReadOnlyTable().Where(o=>o.IsUsed&&o.Category== "Nationality").OrderBy(o=>o.Order));
|
|
|
|
|
//var model = this._personRepo.ReadOnlyTable().Where(o => o.IdentityNumber != null).FirstOrDefault();
|
|
|
|
|
////var bytes = HexStringToByteArray(model);
|
|
|
|
|
////var output = AesDecrypt(bytes);
|
|
|
|
|
//var value = _helper.Decrypt(model.IdentityNumber);
|
|
|
|
|
//var en = _helper.Encrypt(value);
|
|
|
|
|
//return Content(value);
|
|
|
|
|
model.HeaderSelectList= typeof(EditTeacherModel).GetProperties()
|
|
|
|
|
.Select(o => o.GetCustomAttribute<ExcelHeaderAttribute>())
|
|
|
|
|
.Where(o => o != null)
|
|
|
|
|
.Select(o => new SelectListItem {
|
|
|
|
|
Value = o.Header,
|
|
|
|
|
Text = o.Headers.Last().Key.Replace("\r\n", ""),
|
|
|
|
|
Selected = Request.Method.ToLower()=="get"?true: model.Headers.Any(h=>h==o.Header)
|
|
|
|
|
})
|
|
|
|
|
.ToList();
|
|
|
|
|
}
|
|
|
|
|
var organs = this._organizationRepo.ReadOnlyTable().Where(o => o.AreaId == 302705).ToList();
|
|
|
|
|
var bureau = organs.FirstOrDefault(o => o.Name == "城中区教育局");
|
|
|
|
|
bureau.Children = organs.Where(o => o.Name != "城中区教育局").ToList();
|
|
|
|
|
model.Organs.Add(bureau);
|
|
|
|
|
return Result(model);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[Route("/")]
|
|
|
|
|
public IActionResult Index(QueryTeacherModel model, bool isPost)
|
|
|
|
|
{
|
|
|
|
|
var result = this.Index(model);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public IActionResult Edit(int id)
|
|
|
|
|
{
|
|
|
|
|
var personQuery = this._personRepo.ReadOnlyTable();
|
|
|
|
|
var organQuery = this._organizationRepo.ReadOnlyTable();
|
|
|
|
|
var query = from person in personQuery
|
|
|
|
|
join organ2 in organQuery on person.OrganId equals organ2.Id
|
|
|
|
|
where person.Id == id
|
|
|
|
|
//orderby person.BureauId, person.CreateAt
|
|
|
|
|
select new EditTeacherModel
|
|
|
|
|
{
|
|
|
|
|
Id=id,
|
|
|
|
|
//
|
|
|
|
|
Organ = organ2.Name,
|
|
|
|
|
//
|
|
|
|
|
RealName = person.RealName,
|
|
|
|
|
//
|
|
|
|
|
Birthday = person.Birthday,
|
|
|
|
|
Sex = person.Sex,
|
|
|
|
|
Nationality = person.Nationality,
|
|
|
|
|
UserType=person.UserType,
|
|
|
|
|
//
|
|
|
|
|
IdNumber = person.IdentityNumber,
|
|
|
|
|
NativePlace = person.NativePlace,
|
|
|
|
|
Nation = person.Nation,
|
|
|
|
|
};
|
|
|
|
|
var model = query.First();
|
|
|
|
|
model.IdNumber = _helper.Decrypt(model.IdNumber);
|
|
|
|
|
ViewData.SelectList(o => model.Sex, () => this.GetSex(model.Sex));
|
|
|
|
|
ViewData.SelectList(o => model.Nationality, () => this.GetSelectList("Nationality", model.Nationality));
|
|
|
|
|
ViewData.SelectList(o => model.UserType, () => this.GetSelectList("PERSON_STATUS", model.UserType));
|
|
|
|
|
|
|
|
|
|
ViewData.SelectList(o => model.Nation, ()=>this.GetSelectList("ETHNIC_GROUP", model.Nation));
|
|
|
|
|
//var entity = this._userRepo.ReadOnlyTable()
|
|
|
|
|
// .Include(o => o.Organ)
|
|
|
|
|
// .Include(o => o.Teacher)
|
|
|
|
|
// .FirstOrDefault(o => o.UserName == userName);
|
|
|
|
|
//var model = entity.To<EditTeacherModel>();
|
|
|
|
|
//if (entity.Teacher != null)
|
|
|
|
|
//{
|
|
|
|
|
// model.From(entity.Teacher);
|
|
|
|
|
//}
|
|
|
|
|
//model.UserName = entity.UserName;
|
|
|
|
|
//model.UserId = entity.Id;
|
|
|
|
|
//model.Organ = entity.Organ.Name;
|
|
|
|
|
//model.RealName = entity.RealName;
|
|
|
|
|
//this.EntityToModel(entity.Teacher, model);
|
|
|
|
|
//this.ToEditModel(entity.Teacher, model);
|
|
|
|
|
return Result<EditTeacherModel>(model);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//[HttpGet]
|
|
|
|
@ -201,27 +266,6 @@ namespace TeacherExt.Controllers
|
|
|
|
|
// return View(model);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//[HttpGet]
|
|
|
|
|
//public IActionResult Edit(string userName)
|
|
|
|
|
//{
|
|
|
|
|
// var entity = this._userRepo.ReadOnlyTable()
|
|
|
|
|
// .Include(o => o.Organ)
|
|
|
|
|
// .Include(o => o.Teacher)
|
|
|
|
|
// .FirstOrDefault(o => o.UserName == userName);
|
|
|
|
|
// var model = entity.To<EditTeacherModel>();
|
|
|
|
|
// if (entity.Teacher != null)
|
|
|
|
|
// {
|
|
|
|
|
// model.From(entity.Teacher);
|
|
|
|
|
// }
|
|
|
|
|
// model.UserName = entity.UserName;
|
|
|
|
|
// model.UserId = entity.Id;
|
|
|
|
|
// model.Organ = entity.Organ.Name;
|
|
|
|
|
// model.RealName = entity.RealName;
|
|
|
|
|
// this.EntityToModel(entity.Teacher, model);
|
|
|
|
|
// this.ToEditModel(entity.Teacher, model);
|
|
|
|
|
// return Result<EditTeacherModel>(model);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//[HttpPost]
|
|
|
|
|
//public IActionResult Add([FromForm] EditTeacherModel model)
|
|
|
|
|
//{
|
|
|
|
@ -601,13 +645,13 @@ namespace TeacherExt.Controllers
|
|
|
|
|
// }.ToSelectList(selected);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//private SelectList GetSex(string selected)
|
|
|
|
|
//{
|
|
|
|
|
// return new string[] {
|
|
|
|
|
// "男",
|
|
|
|
|
// "女",
|
|
|
|
|
// }.ToSelectList(selected);
|
|
|
|
|
//}
|
|
|
|
|
private SelectList GetSex(string selected)
|
|
|
|
|
{
|
|
|
|
|
return new string[] {
|
|
|
|
|
"男",
|
|
|
|
|
"女",
|
|
|
|
|
}.ToSelectList(selected);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//private SelectList GetNation(string selected)
|
|
|
|
|
//{
|
|
|
|
@ -897,20 +941,37 @@ namespace TeacherExt.Controllers
|
|
|
|
|
// }.ToSelectList(selected);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//private IActionResult Result<TEditModel>(object model)
|
|
|
|
|
//{
|
|
|
|
|
// if (this.IsJsonRequest())
|
|
|
|
|
// {
|
|
|
|
|
// return Json(new
|
|
|
|
|
// {
|
|
|
|
|
// schema = this.GetJsonSchema<TEditModel>(),
|
|
|
|
|
// model,
|
|
|
|
|
// errors = ModelState.Where(o => o.Value.ValidationState == ModelValidationState.Invalid),
|
|
|
|
|
// data = ViewData
|
|
|
|
|
// }, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver(), ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
|
|
|
|
|
// }
|
|
|
|
|
// return View(model);
|
|
|
|
|
//}
|
|
|
|
|
private IActionResult Result<T>(T model)
|
|
|
|
|
{
|
|
|
|
|
if (this.IsJsonRequest())
|
|
|
|
|
{
|
|
|
|
|
return Json(new
|
|
|
|
|
{
|
|
|
|
|
schema = this.GetJsonSchema<T>(),
|
|
|
|
|
model,
|
|
|
|
|
errors = ModelState.Where(o => o.Value.ValidationState == ModelValidationState.Invalid),
|
|
|
|
|
data = ViewData
|
|
|
|
|
}, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver(), ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
|
|
|
|
|
}
|
|
|
|
|
return View(model);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 民族:ETHNIC_GROUP
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="category"></param>
|
|
|
|
|
/// <param name="selected"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private SelectList GetSelectList(string category,object selected)
|
|
|
|
|
{
|
|
|
|
|
var list = this._directoryRepo.ReadOnlyTable()
|
|
|
|
|
.Where(o=>o.IsUsed)
|
|
|
|
|
.Where(o => o.Category == category)
|
|
|
|
|
.OrderBy(o => o.Order)
|
|
|
|
|
.Select(o=>new SelectListItem { Text=o.Remark,Value=o.Code })
|
|
|
|
|
.ToList();
|
|
|
|
|
return new SelectList(list, nameof(SelectListItem.Value), nameof(SelectListItem.Text), selected);
|
|
|
|
|
}
|
|
|
|
|
private List<DictionaryItem> GetItems(string category)
|
|
|
|
|
{
|
|
|
|
|
return this._directoryRepo.ReadOnlyTable()
|
|
|
|
|