using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using PagedList; using Newtonsoft.Json; using System.Collections; using static TreeView; [ezAuthorize] public class memberController : BaseApiController { // GET api/ public IEnumerable Get() { var list = _db.members.ToList(); if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound); return list; } // GET api//5 public Model.member Get(int id) { var item = _db.members.Where(q => q.num == id).FirstOrDefault(); if (item == null) throw new HttpResponseException(HttpStatusCode.NotFound); return item; } // GET api//5 public IEnumerable GetPage(int page) { var list = _db.members.Where(q => q.num < 10).ToList(); return list; } // POST api/ public void Post([FromBody] string value) { } // PUT api//5 public void Put(int id, [FromBody] string value) { } // DELETE api//5 public void Delete(int id) { var prod = _db.members.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { if(!string.IsNullOrEmpty(prod.pic1)) { publicFun publicFun = new publicFun(); publicFun.DeleteFile(Model.member.Dir + "/" + prod.pic1); } //刪除考勤資料 _db.member_check.RemoveRange(prod.member_check); _db.members.Remove(prod); _db.SaveChanges(); //執行 Model.admin_log admin_log = new Model.admin_log(); MyWeb.admin admin = new MyWeb.admin();//api裡不可以用MyWeb if (admin.isLoign()) { admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.HR, (int)Model.admin_log.Status.Delete, prod.m_number+ prod.u_name); } } } [HttpDelete] [Route("api/member/DeleteCheck/{id}")] public void DeleteCheck(int id) //刪除考勤資料 { var prod = _db.member_check.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.member_check.Remove(prod); _db.SaveChanges(); //執行 } } [HttpDelete] [Route("api/member/Delete/{nums}")] public void Delete(string nums) { if (!string.IsNullOrEmpty(nums)) { var getDelItem = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s)); var prod = _db.members.AsEnumerable().Where(q => getDelItem.Contains(q.num)).ToList(); if (prod.Count() > 0) { publicFun publicFun = new publicFun(); foreach (var item in prod) { if (!string.IsNullOrEmpty(item.pic1)) { publicFun.DeleteFile(Model.member.Dir + "/" + item.pic1); } } var prod2 = _db.member_check.AsEnumerable().Where(q => getDelItem.Contains(Convert.ToInt32(q.mem_num))).ToList(); if (prod2.Count > 0) { _db.member_check.RemoveRange(prod2); //_db.SaveChanges(); } _db.members.RemoveRange(prod); _db.SaveChanges(); Model.admin_log admin_log = new Model.admin_log(); MyWeb.admin admin = new MyWeb.admin();//api裡不可以用MyWeb if (admin.isLoign()) { admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.HR, (int)Model.admin_log.Status.Delete, admin_log.LogViewBtn(prod.Select(x => x.m_number+x.u_name).ToList())); } } } } [HttpDelete] [Route("api/member/DeleteAllCheck/{nums}")] public void DeleteAllCheck(string nums) { if (!string.IsNullOrEmpty(nums)) { var ids = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s)); var prod = _db.member_check.AsEnumerable().Where(q => ids.Contains(q.num)).ToList(); if (prod.Count() > 0) { _db.member_check.RemoveRange(prod); _db.SaveChanges(); } } } [HttpPost] [Route("api/member/GetList")] public IHttpActionResult GetList([FromBody] Model.ViewModel.member q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { var qry = _db.members.AsEnumerable(); if (!string.IsNullOrEmpty(q.u_name)) qry = qry.Where(o => o.u_name.Contains(q.u_name.Trim())); if (q.group_kind.HasValue && q.group_kind.Value > 0) { var _subKinds = new TreeView().subKinds(_db.member_group.Select(o => new TreeItem() { num = o.num, root = o.root, }).ToList(), q.group_kind.Value); qry = qry.Where(o => o.group_kind == q.group_kind.Value || _subKinds.Any(s => s == o.group_kind)); } if (q.title_kind.HasValue && q.title_kind.Value > 0) qry = qry.Where(o => o.title_kind == q.title_kind.Value); if (q.starttime.HasValue) qry = qry.Where(o => o.group_kind.HasValue && o.member_group.starttime >= q.starttime.Value); if (q.offtime.HasValue) qry = qry.Where(o => o.group_kind.HasValue && o.member_group.starttime <= q.offtime.Value); if (!string.IsNullOrEmpty(q.sex)) qry = qry.Where(o => o.sex==q.sex.Trim()); if (!string.IsNullOrEmpty(q.m_number)) qry = qry.Where(o => o.m_number.Contains(q.m_number.Trim())); if (sortBy.Equals("m_number")) { if (sortDesc) qry = qry.OrderByDescending(o => o.m_number); else qry = qry.OrderBy(o => o.m_number); } else if (sortBy.Equals("u_name")) { if (sortDesc) qry = qry.OrderByDescending(o => o.u_name); else qry = qry.OrderBy(o => o.u_name); } else if (sortBy.Equals("sex")) { if (sortDesc) qry = qry.OrderByDescending(o => o.sex); else qry = qry.OrderBy(o => o.sex); } else if (sortBy.Equals("group_kind")) { if (sortDesc) qry = qry.OrderByDescending(o => o.group_kind); else qry = qry.OrderBy(o => o.group_kind); } else if (sortBy.Equals("title_kind")) { if (sortDesc) qry = qry.OrderByDescending(o => o.title_kind); else qry = qry.OrderBy(o => o.title_kind); } else if (sortBy.Equals("starttime")) { if (sortDesc) qry = qry.OrderByDescending(o => o.member_group.starttime); else qry = qry.OrderBy(o => o.member_group.starttime); } else qry = qry.OrderByDescending(o => o.num); var ret = new { list = qry.ToPagedList(page, pageSize).Select(x => new { num = x.num, m_number = x.m_number, u_name = x.u_name, sex = x.sex, group_kind = x.group_kind, group_kindTxt = x.group_kind.HasValue ? x.member_group.kind : "", group_kindTxt2 = x.group_kind.HasValue ? new TreeView().kindText(_db.member_group.Select(o => new TreeItem() { kind = o.kind, num = o.num, root = o.root, }).ToList(), x.group_kind) : "", title_kind = x.title_kind, title_kindTxt = x.title_kind.HasValue ? x.member_title.kind : "", starttime = x.group_kind.HasValue ? x.member_group.starttime : (object)null, demo = x.demo, }), count = qry.Count() }; if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound); return Ok(ret); } [HttpPost] [Route("api/member/GetCheckList")] public IHttpActionResult GetCheckList([FromBody] Model.ViewModel.member_check q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { var qry = _db.member_check.AsEnumerable(); if (!string.IsNullOrEmpty(q.u_name)) qry = qry.Where(o => o.member.u_name.Contains(q.u_name)); if (q.group_kind.HasValue && q.group_kind.Value > 0) qry = qry.Where(o => o.member.group_kind == q.group_kind.Value); if (q.check_date_year.HasValue && q.check_date_year.Value > 0 ) qry = qry.Where(o => o.check_date.Value.Year == q.check_date_year.Value); if (q.check_date_month.HasValue && q.check_date_month.Value > 0) qry = qry.Where(o => o.check_date.Value.Month == q.check_date_month.Value); if (sortBy.Equals("m_number")) { if (sortDesc) qry = qry.OrderByDescending(o => o.member.m_number); else qry = qry.OrderBy(o => o.member.m_number); } else if (sortBy.Equals("u_name")) { if (sortDesc) qry = qry.OrderByDescending(o => o.member.u_name); else qry = qry.OrderBy(o => o.member.u_name); } else if (sortBy.Equals("check_date")) { if (sortDesc) qry = qry.OrderByDescending(o => o.check_date); else qry = qry.OrderBy(o => o.check_date); } else if (sortBy.Equals("check_time")) { if (sortDesc) qry = qry.OrderByDescending(o => o.check_time); else qry = qry.OrderBy(o => o.check_time); } else if (sortBy.Equals("check_type")) { if (sortDesc) qry = qry.OrderByDescending(o => o.check_type); else qry = qry.OrderBy(o => o.check_type); } else if (sortBy.Equals("login_type")) { if (sortDesc) qry = qry.OrderByDescending(o => o.login_type); else qry = qry.OrderBy(o => o.login_type); } else qry = qry.OrderByDescending(o => o.num); var tdesc = publicFun.enum_desc(); var tdesc2 = publicFun.enum_desc(); var ret = new { list = qry.ToPagedList(page, pageSize).Select(x => new { num = x.num, m_number = x.member.m_number, u_name = x.member.u_name, check_date = x.check_date, check_time = x.check_time, check_type = x.check_type, check_type_desc = tdesc[x.check_type ?? 1], login_type = x.login_type, login_type_desc = tdesc2[x.login_type ?? 1] }), count = qry.Count() }; if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound); return Ok(ret); } [HttpPost] [Route("api/member/GetGroupList")] public IHttpActionResult GetGroupList([FromBody] Model.ViewModel.member_group q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { var qry = _db.member_group.AsEnumerable(); if (!string.IsNullOrEmpty(q.kind)) qry = qry.Where(o => o.kind.Contains(q.kind)); //if (sortBy.Equals("kind")) //{ // if (sortDesc) // qry = qry.OrderByDescending(o => o.kind); // else // qry = qry.OrderBy(o => o.kind); //} //else // qry = qry = qry.OrderBy(o => o.kind); var qry2 = new TreeView().get_data2(qry.Select(o => new TreeItem() { kind = o.kind, num = o.num, root = o.root, range = o.range, }).OrderBy(x => x.root).ThenBy(x => x.kind).ToList(), 0, 0); var ret = new { list = qry2.ToPagedList(page, pageSize).Select(x => new { num = x.num, kind = new TreeView().RptDash(x.Level) + x.kind, }), count = qry.Count() }; if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound); return Ok(ret); } [HttpPost] [Route("api/member/GetTitleList")] public IHttpActionResult GetTitleList([FromBody] Model.ViewModel.member_title q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { var qry = _db.member_title.AsEnumerable(); if (!string.IsNullOrEmpty(q.kind)) qry = qry.Where(o => o.kind.Contains(q.kind)); if (q.inTime) qry = qry.Where(o => o.status == "Y"); if (sortBy.Equals("kind")) { if (sortDesc) qry = qry.OrderByDescending(o => o.kind); else qry = qry.OrderBy(o => o.kind); } else qry = qry = qry.OrderBy(o => o.kind); var tdesc = publicFun.enum_desc(); var tdesc2 = publicFun.enum_desc(); var ret = new { list = qry.ToPagedList(page, pageSize).Select(x => new { num = x.num, kind = x.kind, }), count = qry.Count() }; if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound); return Ok(ret); } }