407 lines
12 KiB
C#
407 lines
12 KiB
C#
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 projectController : BaseApiController
|
|
{
|
|
// GET api/<controller>
|
|
public IEnumerable<Model.project> Get()
|
|
{
|
|
var list = _db.projects.ToList();
|
|
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return list;
|
|
}
|
|
|
|
// GET api/<controller>/5
|
|
public Model.project Get(int id)
|
|
{
|
|
var item = _db.projects.Where(q => q.num == id).FirstOrDefault();
|
|
if (item == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return item;
|
|
}
|
|
|
|
// GET api/<controller>/5
|
|
public IEnumerable<Model.project> GetPage(int page)
|
|
{
|
|
var project = _db.projects.Where(q => q.num < 10).ToList();
|
|
return project;
|
|
}
|
|
|
|
// POST api/<controller>
|
|
public void Post([FromBody] string value)
|
|
{
|
|
}
|
|
|
|
// PUT api/<controller>/5
|
|
public void Put(int id, [FromBody] string value)
|
|
{
|
|
}
|
|
|
|
// DELETE api/<controller>/5
|
|
public void Delete(int id)
|
|
{
|
|
var prod = _db.projects.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
_db.project_sub.RemoveRange(prod.project_sub); //刪除活動資料
|
|
|
|
_db.projects.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.Project, (int)Model.admin_log.Status.Delete, prod.subject);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/project/Delete/{nums}")]
|
|
public void Delete(string nums)
|
|
{
|
|
if (!string.IsNullOrEmpty(nums))
|
|
{
|
|
var ids = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s));
|
|
var prod = _db.projects.AsEnumerable().Where(q => ids.Contains(q.num)).ToList();
|
|
if (prod.Count() > 0)
|
|
{
|
|
foreach (var item in prod)
|
|
_db.project_sub.RemoveRange(item.project_sub); //刪除活動資料
|
|
|
|
_db.projects.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.Project, (int)Model.admin_log.Status.Delete, admin_log.LogViewBtn(prod.Select(x => x.subject).ToList()));
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/project/DeleteItem/{id}")]
|
|
public void DeleteDetail(int id) //刪除專案明細
|
|
{
|
|
if (id > 0)
|
|
{
|
|
var prod = _db.project_sub.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
_db.project_sub.Remove(prod);
|
|
_db.SaveChanges(); //執行
|
|
}
|
|
}
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/project/GetList")]
|
|
public IHttpActionResult GetList([FromBody] Model.ViewModel.project q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
var qry = _db.projects.AsEnumerable();
|
|
|
|
if (!string.IsNullOrEmpty(q.subject))
|
|
qry = qry.Where(o => o.subject.Contains(q.subject.Trim()));
|
|
if (q.kind.HasValue)
|
|
{
|
|
var _subKinds = new TreeView().subKinds(_db.project_kind.Select(o => new TreeItem()
|
|
{
|
|
num = o.num,
|
|
root = o.root,
|
|
}).ToList(), q.kind.Value);
|
|
|
|
qry = qry.Where(o => o.kind == q.kind.Value || _subKinds.Any(s => s == o.kind));
|
|
|
|
}
|
|
if (q.actItem_num.HasValue)
|
|
qry = qry.Where(o => o.actItem_num == q.actItem_num.Value);
|
|
|
|
if (sortBy.Equals("subject"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.subject);
|
|
else
|
|
qry = qry.OrderBy(o => o.subject);
|
|
}
|
|
else if (sortBy.Equals("kind"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.kind);
|
|
else
|
|
qry = qry.OrderBy(o => o.kind);
|
|
}
|
|
else if (sortBy.Equals("actItem_num"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.actItem_num);
|
|
else
|
|
qry = qry.OrderBy(o => o.actItem_num);
|
|
}
|
|
else
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
|
|
|
|
var ret = new
|
|
{
|
|
list = qry.ToPagedList(page, pageSize).Select(x => new
|
|
{
|
|
num = x.num,
|
|
subject = x.subject,
|
|
kind = x.kind,
|
|
kindTxt = x.kind.HasValue? x.project_kind.kind :"",
|
|
kindsTxt = x.kind.HasValue ? new TreeView().kindText(_db.project_kind.Select(o => new TreeItem()
|
|
{
|
|
kind = o.kind,
|
|
num = o.num,
|
|
root = o.root,
|
|
}).ToList(), x.kind) : "",
|
|
actItem_num = x.actItem_num,
|
|
actItem_Txt = x.actItem_num.HasValue ? x.actItem.subject : "",
|
|
|
|
}),
|
|
count = qry.Count()
|
|
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/project/GetKindList")]
|
|
public IHttpActionResult GetKindList([FromBody] Model.ViewModel.project_kind q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
var qry = _db.project_kind.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.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/project/GetItemList")]
|
|
public IHttpActionResult GetItemList([FromBody] Model.ViewModel.project q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
|
|
if (q.num.HasValue)
|
|
{
|
|
var qry = _db.project_sub.AsEnumerable();
|
|
|
|
qry = qry.Where(o => o.pro_id == q.num.Value);
|
|
|
|
if (!string.IsNullOrEmpty(q.subject))
|
|
qry = qry.Where(o => o.subject.Contains(q.subject.Trim()));
|
|
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
|
|
|
|
var ret = new
|
|
{
|
|
list = qry.ToPagedList(page, pageSize).Select(x => new
|
|
{
|
|
num = x.num,
|
|
subject = x.subject,
|
|
uptime = x.uptime,
|
|
pic1 = x.pic1,
|
|
pro_id = x.pro_id,
|
|
word = x.word,
|
|
}),
|
|
count = qry.Count()
|
|
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/project/SaveDetailData")]
|
|
public IHttpActionResult SaveDetailData([FromBody] Model.project_sub item)
|
|
{
|
|
if (item.pro_id.HasValue)
|
|
{
|
|
//if有資料-修改 , else 新增
|
|
if (item.num > 0)
|
|
{
|
|
Model.project_sub sub = _db.project_sub.Where(q => q.num == item.num).FirstOrDefault();//修改
|
|
if (sub != null)
|
|
{
|
|
sub.pro_id = item.pro_id;
|
|
sub.subject = item.subject;
|
|
sub.word = item.word;
|
|
sub.pic1 = item.pic1;
|
|
if (item.uptime.HasValue) { sub.uptime = item.uptime.Value; }
|
|
|
|
_db.SaveChanges();
|
|
return Ok(sub.num);
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
else
|
|
{
|
|
Model.project_sub sub = new Model.project_sub();//新增
|
|
sub.pro_id = item.pro_id;
|
|
sub.subject = item.subject;
|
|
sub.word = item.word;
|
|
sub.pic1 = item.pic1;
|
|
if (item.uptime.HasValue ) { sub.uptime = item.uptime.Value; }
|
|
|
|
_db.project_sub.Add(sub);
|
|
_db.SaveChanges();
|
|
|
|
return Ok(sub.num);
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/project/GetPatronizeList")]
|
|
public IHttpActionResult GetPatronizeList([FromBody] Model.ViewModel.pro_order_detail q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
var projectDt = _db.projects.AsEnumerable(); ;//專案
|
|
|
|
try
|
|
{
|
|
var qry = _db.pro_order_detail.AsEnumerable();
|
|
qry = qry.Where(o => (int?)o.actItem.category == (int)Model.activity.category.Patronize);
|
|
|
|
if (q.f_num.HasValue)
|
|
qry = qry.Where(o => o.f_num == q.f_num.Value);
|
|
if (q.actItem_num.HasValue)
|
|
qry = qry.Where(o => o.actItem_num == q.actItem_num.Value);
|
|
if (!string.IsNullOrEmpty(q.f_num_txt))
|
|
qry = qry.Where(o => o.f_num != null && o.follower.u_name.Contains(q.f_num_txt));
|
|
|
|
if (sortBy.Equals("f_num"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.f_num);
|
|
else
|
|
qry = qry.OrderBy(o => o.f_num);
|
|
}
|
|
else if (sortBy.Equals("actItem_num"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.actItem_num);
|
|
else
|
|
qry = qry.OrderBy(o => o.actItem_num);
|
|
}
|
|
else
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
|
|
|
|
var ret = new
|
|
{
|
|
list = qry.ToPagedList(page, pageSize).Select(x => new
|
|
{
|
|
f_num = x.f_num,
|
|
f_num_Txt = x.f_num.HasValue ? x.follower.u_name : "",
|
|
actItem_num = x.actItem_num,
|
|
actItem_Txt = x.actItem_num.HasValue ? x.actItem.subject : "",
|
|
price = x.price ?? 0,
|
|
qty = x.qty ?? 0,
|
|
//projects = projectDt.Where(o => o.actItem_num == x.actItem_num ).Select(o => o.subject),
|
|
projects =
|
|
from s in projectDt
|
|
where s.actItem_num == x.actItem_num
|
|
select new
|
|
{
|
|
subject = s.subject,
|
|
num = s.num,
|
|
}
|
|
}),
|
|
count = qry.Count()
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
|
|
}
|
|
}
|