1536 lines
54 KiB
C#
1536 lines
54 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;
|
|
using System.Data.Entity;
|
|
|
|
// api/activity
|
|
//[ezAuthorize(Roles = "admin")]//群組:*
|
|
[ezAuthorize]
|
|
public class activityController : ApiController
|
|
{
|
|
private Model.ezEntities _db = new Model.ezEntities();
|
|
// GET api/<controller>
|
|
[AllowAnonymous]
|
|
public IEnumerable<Model.activity> Get(string startDate = null, string endDate = null)
|
|
{
|
|
var qry = _db.activities.AsQueryable();
|
|
|
|
if (!string.IsNullOrEmpty(startDate) && !string.IsNullOrEmpty(endDate))
|
|
{
|
|
var date = DateTime.Parse(startDate);
|
|
qry = qry.Where(x => x.startDate_solar <= date && x.endDate_solar > date);
|
|
}
|
|
|
|
var list = qry.OrderByDescending(x => x.startDate_solar).ThenByDescending(x => x.num).ToList();
|
|
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return list;
|
|
}
|
|
|
|
public IEnumerable<Model.activity> Get(int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
//if (pageSize > 0) qry1 = qry1.ToPagedList(page, pageSize);
|
|
var list = _db.activities.OrderBy(o => o.num).ToPagedList(page, pageSize);
|
|
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return list;
|
|
}
|
|
|
|
// GET api/<controller>/5
|
|
public Model.activity Get(int id)
|
|
{
|
|
var item = _db.activities.Where(q => q.num == id).FirstOrDefault();
|
|
//if (item == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return item;
|
|
}
|
|
|
|
// POST api/<controller>
|
|
public void Post([FromBody] Model.activity item)
|
|
{
|
|
}
|
|
|
|
// PUT api/<controller>/5
|
|
public void Put(int id, [FromBody] Model.activity item)
|
|
{
|
|
}
|
|
|
|
// DELETE api/<controller>/5
|
|
public void Delete(int id)
|
|
{
|
|
var prod = _db.activities.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
//刪除相關資料
|
|
var prod2 = _db.activity_relating.AsEnumerable().Where(q => q.activity_num == id).ToList(); //相關項目
|
|
if (prod2.Count > 0)
|
|
{
|
|
//查詢結果全部刪除
|
|
_db.activity_relating.RemoveRange(prod2);
|
|
}
|
|
var prod3 = _db.activity_spares.AsEnumerable().Where(q => q.activity_num == id).ToList(); //備品項目
|
|
if (prod3.Count > 0)
|
|
{
|
|
_db.activity_spares.RemoveRange(prod3);
|
|
}
|
|
|
|
//訊息、庫存、收支,從資料庫設定null
|
|
|
|
|
|
_db.activities.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.Activity, (int)Model.admin_log.Status.Delete, prod.subject);
|
|
}
|
|
}
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/activity/DeleteItem/{id}")]
|
|
public void DeleteItem(int id)
|
|
{
|
|
var prod = _db.actItems.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
/*if (prod != null)
|
|
{
|
|
//var prod2 = _db.actItem_files.AsEnumerable().Where(q => q.actItem_num == id).ToList(); //相關項目
|
|
//if (prod2.Count > 0)
|
|
//{
|
|
// //查詢結果全部刪除
|
|
// _db.actItem_files.RemoveRange(prod2);
|
|
// _db.SaveChanges();
|
|
//}
|
|
|
|
_db.actItem_files.RemoveRange(prod.actItem_files);
|
|
|
|
_db.actItems.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.Item, (int)Model.admin_log.Status.Delete, prod.subject);
|
|
}
|
|
|
|
}*/
|
|
if (prod != null)
|
|
{
|
|
////prod.IsDel = true; ////不確定是否新增欄位? 先註解
|
|
_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.Item, (int)Model.admin_log.Status.Delete, prod.subject);
|
|
}
|
|
}
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/activity/Delete/{nums}")]
|
|
public void Delete(string nums)
|
|
{
|
|
if (!string.IsNullOrEmpty(nums))
|
|
{
|
|
var ids = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s));
|
|
|
|
var prod = _db.activities.AsEnumerable().Where(q => ids.Contains(q.num)).ToList();
|
|
if (prod.Count() > 0)
|
|
{
|
|
//var prod2 = _db.activity_relating.AsEnumerable().Where(q => ids.Contains(Convert.ToInt32(q.activity_num))).ToList();
|
|
var prod2 = _db.activity_relating.AsEnumerable().Where(q => ids.Any(x => x == q.activity_num)).ToList();
|
|
if (prod2.Count > 0)
|
|
{
|
|
_db.activity_relating.RemoveRange(prod2);
|
|
// _db.SaveChanges();
|
|
}
|
|
|
|
//var prod3 = _db.activity_spares.AsEnumerable().Where(q => ids.Contains(Convert.ToInt32(q.activity_num))).ToList();
|
|
var prod3 = _db.activity_spares.AsEnumerable().Where(q => ids.Any(x => x == q.activity_num)).ToList();
|
|
if (prod3.Count > 0)
|
|
{
|
|
_db.activity_spares.RemoveRange(prod3);
|
|
//_db.SaveChanges();
|
|
}
|
|
|
|
_db.activities.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.Activity, (int)Model.admin_log.Status.Delete, admin_log.LogViewBtn(prod.Select(x => x.subject).ToList()));
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/activity/DeleteAllItem/{nums}")]
|
|
public void DeleteAllItem(string nums)
|
|
{
|
|
if (!string.IsNullOrEmpty(nums))
|
|
{
|
|
var ids = nums.TrimEnd(',').Split(',').Select(s => int.Parse(s));
|
|
var prod = _db.actItems.AsEnumerable().Where(q => ids.Contains(q.num)).ToList();
|
|
if (prod.Count() > 0)
|
|
{
|
|
//var prod2 = _db.actItem_files.AsEnumerable().Where(q => ids.Contains(Convert.ToInt32(q.actItem_num))).ToList();
|
|
var prod2 = _db.actItem_files.AsEnumerable().Where(q => ids.Any(x => x == q.actItem_num)).ToList();
|
|
if (prod2.Count > 0)
|
|
{
|
|
_db.actItem_files.RemoveRange(prod2);
|
|
//_db.SaveChanges();
|
|
}
|
|
|
|
_db.actItems.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.Item, (int)Model.admin_log.Status.Delete, admin_log.LogViewBtn(prod.Select(x => x.subject).ToList()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
[HttpGet]
|
|
[Route("api/activity/count")]
|
|
public int Count()
|
|
{
|
|
var count = _db.activities.Count();
|
|
return count;
|
|
}
|
|
[HttpPost]
|
|
[Route("api/activity/GetList")]
|
|
public IHttpActionResult GetList([FromBody] Model.ViewModel.activity q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
var qry = _db.activities.AsEnumerable();
|
|
if (!string.IsNullOrEmpty(q.subject))
|
|
qry = qry.Where(o => o.subject.Contains(q.subject));
|
|
if (q.kind.HasValue && q.kind > 0)
|
|
{
|
|
var _subKinds = new TreeView().subKinds(_db.activity_kind.Select(o => new TreeItem()
|
|
{
|
|
num = o.num,
|
|
root = o.root,
|
|
}).ToList(), q.kind.Value);
|
|
|
|
//qry = qry.Where(o => o.kind == q.kind);
|
|
qry = qry.Where(o => o.kind == q.kind.Value || _subKinds.Any(s => s == o.kind));
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(q.kindTxt))
|
|
qry = qry.Where(o => o.activity_kind.kind.Contains(q.kindTxt));
|
|
|
|
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("startDate_solar"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.startDate_solar);
|
|
else
|
|
qry = qry.OrderBy(o => o.startDate_solar);
|
|
}
|
|
else if (sortBy.Equals("endDate_solar"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.endDate_solar);
|
|
else
|
|
qry = qry.OrderBy(o => o.endDate_solar);
|
|
}
|
|
else if (sortBy.Equals("dueDate"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.dueDate);
|
|
else
|
|
qry = qry.OrderBy(o => o.dueDate);
|
|
}
|
|
else
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
if (pageSize > 0) qry = qry.ToPagedList(page, pageSize);
|
|
var ret = new
|
|
{
|
|
list = qry.Select(x => new
|
|
{
|
|
num = x.num,
|
|
subject = x.subject,
|
|
kind = x.kind,
|
|
kindTxt = x.kind.HasValue ? x.activity_kind.kind : "",
|
|
kindsTxt = x.kind.HasValue ? new TreeView().kindText(_db.activity_kind.Select(o => new TreeItem()
|
|
{
|
|
kind = o.kind,
|
|
num = o.num,
|
|
root = o.root,
|
|
}).ToList(), x.kind) : "",
|
|
startDate_solar = x.startDate_solar,
|
|
endDate_solar = x.endDate_solar,
|
|
startDate_lunar = x.startDate_lunar,
|
|
endDate_lunar = x.endDate_lunar,
|
|
dueDate = x.dueDate,
|
|
|
|
}),
|
|
count = count
|
|
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetItemList")]
|
|
public IHttpActionResult GetItemList([FromBody] Model.ViewModel.actItem q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
|
|
//var stockDt = _db.stocks.AsEnumerable(); ;//庫存
|
|
var fileDt = _db.files.AsEnumerable().Where(f => f.subject.Contains(q.fileTxt)).Select(f => f.num.ToString());//文件
|
|
|
|
//每個品項在每個倉庫的結餘量
|
|
var stockDt = (
|
|
from t_min_max in (
|
|
from stock in _db.stocks
|
|
group stock by new { stock.kind, stock.actItem_num } into g
|
|
select new
|
|
{
|
|
g.Key.kind,
|
|
g.Key.actItem_num,
|
|
min_id = g.Min(x => x.num),
|
|
max_id = g.Max(x => x.num)
|
|
}
|
|
)
|
|
join t_min in _db.stocks on t_min_max.min_id equals t_min.num
|
|
join t_max in _db.stocks on t_min_max.max_id equals t_max.num into t_maxGroup
|
|
from t_max in t_maxGroup.DefaultIfEmpty()
|
|
select new
|
|
{
|
|
t_min_max.kind,
|
|
t_min_max.actItem_num,
|
|
final_last = t_min_max.min_id != t_min_max.max_id ? t_max.final_stock ?? 0 : t_min.final_stock ?? 0,
|
|
rent_last = t_min_max.min_id != t_min_max.max_id ? t_max.rent_stock ?? 0 : t_min.rent_stock ?? 0
|
|
}
|
|
).ToList();
|
|
|
|
|
|
////var qry = _db.actItems.Where(a => a.IsDel == false).AsEnumerable();////不確定是否新增欄位? 先註解
|
|
var qry = _db.actItems.AsEnumerable();
|
|
|
|
if (!string.IsNullOrEmpty(q.subject))
|
|
qry = qry.Where(o => o.subject.Contains(q.subject.Trim()));
|
|
if (q.kind.HasValue && q.kind.Value > 0)
|
|
{
|
|
var _subKinds = new TreeView().subKinds(_db.actItem_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 (!string.IsNullOrEmpty(q.kindTxt))
|
|
qry = qry.Where(o => o.actItem_kind?.kind != null && o.actItem_kind.kind.Contains(q.kindTxt));
|
|
if (q.category.HasValue && q.category.Value > 0)
|
|
qry = qry.Where(o => o.category == q.category.Value);
|
|
if (!string.IsNullOrEmpty(q.categorys))
|
|
qry = qry.Where(o => q.categorys.Contains(o.category.HasValue ? o.category.Value.ToString() : "0"));
|
|
if (!string.IsNullOrEmpty(q.status))
|
|
qry = qry.Where(o => o.status.Contains(q.status));
|
|
if (!string.IsNullOrEmpty(q.extend))
|
|
qry = qry.Where(o => o.extend == q.extend);
|
|
if (!string.IsNullOrEmpty(q.fileTxt))
|
|
qry = qry.Where(o => o.actItem_files.Where(f2 => f2.actItem_num == o.num && fileDt.ToArray().Contains(f2.files_num.ToString())).Count() > 0);
|
|
//qry = qry.Where(o => o.actItem_files.Where(f2 => f2.actItem_num == o.num && f2.files_num.ToString().Contains( String.Join(",", fileDt.Select(p => p.ToString()).ToArray()) )).Count() >0 ) ;
|
|
|
|
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("price"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.price);
|
|
else
|
|
qry = qry.OrderBy(o => o.price);
|
|
}
|
|
else if (sortBy.Equals("status"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.status);
|
|
else
|
|
qry = qry.OrderBy(o => o.status);
|
|
}
|
|
else
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
|
|
var tdesc = publicFun.enum_desc<Model.activity.category>();
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
if (pageSize > 0) qry = qry.ToPagedList(page, pageSize);
|
|
var ret = new
|
|
{
|
|
list = qry.Select(x => new
|
|
{
|
|
num = x.num,
|
|
subject = x.subject,
|
|
kind = x.kind,
|
|
kindTxt = x.kind.HasValue ? x.actItem_kind.kind : "",
|
|
kindsTxt = x.kind.HasValue ? new TreeView().kindText(_db.actItem_kind.Select(o => new TreeItem()
|
|
{
|
|
kind = o.kind,
|
|
num = o.num,
|
|
root = o.root,
|
|
}).ToList(), x.kind) : "",
|
|
category = x.category,
|
|
categoryTxt = x.category != null ? tdesc[x.category ?? 1] : "",
|
|
price = x.price,
|
|
status = x.status,
|
|
//stock = new
|
|
//{
|
|
// //cate1Qty = stockDt.Where(o => o.actItem_num==x.num && o.category == (int)Model.stock.type.Purchase).Select(o => o.qty).Sum(),
|
|
// //cate2Qty = stockDt.Where(o => o.actItem_num==x.num && o.category == (int)Model.stock.type.Reduce).Select(o => o.qty).Sum(),
|
|
// //cate3Qty = stockDt.Where(o => o.actItem_num==x.num && o.category == (int)Model.stock.type.Rent).Select(o => o.qty).Sum(),
|
|
// //cate4Qty = stockDt.Where(o => o.actItem_num==x.num && o.category == (int)Model.stock.type.Return).Select(o => o.qty).Sum(),
|
|
|
|
// catePQty= (x.stocks.Where(o => o.category == (int)Model.stock.type.Purchase || o.category == (int)Model.stock.type.Return).Select(o => o.qty).Sum()??0) -(x.stocks.Where(o => o.category == (int)Model.stock.type.Reduce || o.category == (int)Model.stock.type.Rent).Select(o => o.qty).Sum()??0) ,
|
|
// cateRQty= (x.stocks.Where(o => o.category == (int)Model.stock.type.Rent).Select(o => o.qty).Sum()??0 ) - (x.stocks.Where(o => o.category == (int)Model.stock.type.Return).Select(o => o.qty).Sum()??0) ,
|
|
//},
|
|
final_stock = stockDt.Where(o => o.actItem_num == x.num).Select(o => o.final_last).Sum(),
|
|
rent_stock = stockDt.Where(o => o.actItem_num == x.num).Select(o => o.rent_last).Sum(),
|
|
|
|
}),
|
|
count = count
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetItemBomList")]
|
|
public IHttpActionResult GetItemBomList([FromBody] Model.act_bom q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
int? this_id = q.item_num;
|
|
// 先找到父層
|
|
var parent = _db.act_bom.FirstOrDefault(w => w.package_num == null && w.item_num == this_id);
|
|
if (parent == null)
|
|
{
|
|
return Ok(new { list = new List<object>(), count = 0 });
|
|
}
|
|
// 只抓父層下的直接子項目,且只帶必要欄位
|
|
var qlist = _db.act_bom
|
|
.Where(w => w.package_num == parent.num)
|
|
.Select(b => new
|
|
{
|
|
b.num,
|
|
b.package_num,
|
|
b.item_num,
|
|
b.qty,
|
|
b.memo,
|
|
b.optional,
|
|
actItem = new
|
|
{
|
|
num = b.actItem.num,
|
|
subject = b.actItem.subject
|
|
}
|
|
})
|
|
.ToList();
|
|
var ret = new
|
|
{
|
|
list = qlist,
|
|
count = qlist.Count
|
|
};
|
|
return Ok(ret);
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/SaveDetailBomList")]
|
|
public IHttpActionResult SaveDetailBomList([FromBody] Model.act_bom item)
|
|
{
|
|
if (item.item_num > 0)
|
|
{
|
|
//if有資料-修改 , else 新增
|
|
if (item.num > 0)
|
|
{
|
|
Model.act_bom act_bom = _db.act_bom
|
|
.Where(q => q.num == item.num).FirstOrDefault();//修改
|
|
if (act_bom != null)
|
|
{
|
|
if (item.package_num > 0) { act_bom.package_num = item.package_num; }
|
|
if (item.item_num > 0) { act_bom.item_num = item.item_num; }
|
|
act_bom.qty = item.qty;
|
|
act_bom.memo = item.memo;
|
|
////SAVE OTHER COLUMNS
|
|
//_files.reg_time = DateTime.Now;
|
|
|
|
_db.SaveChanges();
|
|
var ret = act_bom.num;
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
return NotFound();
|
|
}
|
|
else
|
|
{
|
|
_db.act_bom.Add(item);
|
|
_db.SaveChanges();
|
|
|
|
var ret = item.num;
|
|
return Ok(ret);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
return NotFound();
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetOrderList")]
|
|
public IHttpActionResult GetOrderList([FromBody] Model.ViewModel.activity q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
int _activity_id = q.num.HasValue && q.num.Value > 0 ? q.num.Value : 0;
|
|
|
|
//var relatingDt = _db.activity_relating.AsEnumerable().Where(o => o.activity_num == _activity_id); //活動的相關項目
|
|
|
|
|
|
//if (_activity_id > 0)
|
|
//{
|
|
// //有選活動
|
|
// var qry = _db.activity_relating.AsEnumerable().Where(o => o.activity_num== _activity_id);
|
|
// qry =qry.Where(o => o.actItem.status == "Y"); //狀態啟用
|
|
// if (!string.IsNullOrEmpty(q.subject))
|
|
// qry = qry.Where(o => o.actItem.subject.Contains(q.subject));
|
|
// if (!string.IsNullOrEmpty(q.kindTxt))
|
|
// qry = qry.Where(o => o.actItem.actItem_kind.kind.Contains(q.kindTxt));
|
|
// qry = qry.OrderByDescending(o => o.num);
|
|
// var ret = new
|
|
// {
|
|
// list = qry.ToPagedList(page, pageSize).Select(x => new
|
|
// {
|
|
// num = x.actItem_num,
|
|
// subject = x.actItem.subject,
|
|
// kind = x.actItem.kind,
|
|
// kindTxt = x.actItem.actItem_kind.kind,
|
|
// }),
|
|
// count = qry.Count()
|
|
// };
|
|
|
|
// if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
// return Ok(ret);
|
|
|
|
//}
|
|
//else
|
|
{
|
|
//抓 所有品項
|
|
////var qry = _db.actItems.Where(a => a.IsDel == false).AsQueryable();////不確定是否新增欄位? 先註解
|
|
var qry = _db.actItems.AsQueryable();
|
|
//qry = qry.Where(o => o.status == "Y"); //狀態啟用
|
|
if (!string.IsNullOrEmpty(q.subject))
|
|
qry = qry.Where(o => o.subject.Contains(q.subject));
|
|
if (!string.IsNullOrEmpty(q.kindTxt))
|
|
qry = qry.Where(o => o.actItem_kind.kind.Contains(q.kindTxt));
|
|
if (!string.IsNullOrEmpty(q.is_reconcile))
|
|
qry = qry.Where(o => o.is_reconcile == q.is_reconcile);
|
|
qry = qry.Where(o => "1,2,4".Contains(o.category.HasValue ? o.category.Value.ToString() : "0")); //報名,掛單,贊助
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
var qryList = (pageSize > 0) ? qry.ToPagedList(page, pageSize).ToList() : qry.ToList();
|
|
var ret = new
|
|
{
|
|
list = qryList.Select(x => new
|
|
{
|
|
num = x.num,
|
|
subject = x.subject,
|
|
kind = x.kind,
|
|
kindTxt = x.kind.HasValue ? x.actItem_kind.kind : "",
|
|
category = x.category,
|
|
//price = (_activity_id > 0) ? (relatingDt.Where(o => o.actItem_num == x.num).Select(o => o.price).FirstOrDefault()?? x.price) : (x.price ) , //預設金額,有活動抓活動預設,沒活動抓品項預設
|
|
price = (_activity_id > 0) ? (x.activity_relating.Select(o => o.price).FirstOrDefault() ?? x.price) : (x.price), //預設金額,有活動抓活動預設,沒活動抓品項預設
|
|
customize_data = x.customize_data ?? "",
|
|
files = x.actItem_files.Select(f => new
|
|
{
|
|
num = f.file.num,
|
|
subject = f.file.subject,
|
|
word = f.file.word,
|
|
cuz_column = f.file.customize_data ?? "", //定義欄位需求
|
|
}),
|
|
}),
|
|
count = count
|
|
};
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetItemFiles")]
|
|
public IHttpActionResult GetItemFiles([FromBody] Model.actItem_files q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
int this_id = q.actItem_num;
|
|
if (this_id > 0)
|
|
{
|
|
//檢查
|
|
var qry = _db.actItem_files
|
|
.Where(o => o.actItem_num == this_id);
|
|
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
//if (count==0) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
|
|
var qry1 = (pageSize > 0) ? qry.ToPagedList(page, pageSize).ToList() : qry.ToList();
|
|
int i = 1;
|
|
var list = qry1.Select(x => new
|
|
{
|
|
id = i++,
|
|
num = x.num,
|
|
actItem_num = x.actItem_num,
|
|
|
|
files_num_selected = new
|
|
{
|
|
text = x.file.subject,
|
|
val = x.files_num,
|
|
}
|
|
}).ToList();
|
|
//已有值
|
|
var ret = new
|
|
{
|
|
list = list,
|
|
count = count,
|
|
};
|
|
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/SaveDetailData")]
|
|
public IHttpActionResult SaveDetailData([FromBody] Model.actItem_files item)
|
|
{
|
|
if (item.actItem_num > 0)
|
|
{
|
|
//if有資料-修改 , else 新增
|
|
if (item.num > 0)
|
|
{
|
|
Model.actItem_files _files = _db.actItem_files
|
|
.Where(q => q.num == item.num).FirstOrDefault();//修改
|
|
if (_files != null)
|
|
{
|
|
if (item.actItem_num > 0) { _files.actItem_num = item.actItem_num; }
|
|
if (item.files_num > 0) { _files.files_num = item.files_num; }
|
|
_files.reg_time = DateTime.Now;
|
|
|
|
_db.SaveChanges();
|
|
var ret = _files.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
else
|
|
return NotFound();
|
|
}
|
|
else
|
|
{
|
|
Model.actItem_files _files = new Model.actItem_files();//新增
|
|
if (item.actItem_num > 0) { _files.actItem_num = item.actItem_num; }
|
|
if (item.files_num > 0) { _files.files_num = item.files_num; }
|
|
_files.reg_time = DateTime.Now;
|
|
|
|
_db.actItem_files.Add(_files);
|
|
_db.SaveChanges();
|
|
|
|
var ret = _files.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/activity/DeleteFilesItem/{id}")]//刪除品項的相關文件
|
|
public void DeleteFilesItem(int id)
|
|
{
|
|
var prod = _db.actItem_files.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
|
|
_db.actItem_files.Remove(prod);
|
|
_db.SaveChanges(); //執行
|
|
|
|
}
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetKindDetail")]
|
|
public IHttpActionResult GetKindDetail([FromBody] Model.activity_kind_detail q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
int this_id = q.activity_kind_num;
|
|
if (this_id > 0)
|
|
{
|
|
//檢查
|
|
var qry = _db.activity_kind_detail.AsEnumerable();
|
|
qry = qry.Where(o => o.activity_kind_num == this_id);
|
|
int i = 1;
|
|
|
|
//已有值
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
if (pageSize > 0) qry = qry.ToPagedList(page, pageSize);
|
|
var ret = new
|
|
{
|
|
list = qry.Select(x => new
|
|
{
|
|
id = i++,
|
|
num = x.num,
|
|
activity_kind_num = x.activity_kind_num,
|
|
actItem_num = new
|
|
{
|
|
text = x.actItem?.subject,
|
|
val = x.actItem_num,
|
|
},
|
|
price = x.price ?? 0,
|
|
qty = x.qty ?? 0,
|
|
}),
|
|
count = count,
|
|
};
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/SaveActKindDetail")]
|
|
public IHttpActionResult SaveActKindDetail([FromBody] Model.activity_kind_detail item)
|
|
{
|
|
if (item.activity_kind_num > 0)
|
|
{
|
|
//if有資料-修改 , else 新增
|
|
if (item.num > 0)
|
|
{
|
|
Model.activity_kind_detail _detail = _db.activity_kind_detail.Where(q => q.num == item.num).FirstOrDefault();//修改
|
|
if (_detail != null)
|
|
{
|
|
if (item.activity_kind_num > 0) { _detail.activity_kind_num = item.activity_kind_num; }
|
|
if (item.actItem_num > 0) { _detail.actItem_num = item.actItem_num; }
|
|
if (item.price.HasValue) { _detail.price = item.price.Value; }
|
|
else { _detail.price = null; }
|
|
if (item.qty.HasValue) { _detail.qty = item.qty.Value; }
|
|
else { _detail.qty = null; }
|
|
_detail.reg_time = DateTime.Now;
|
|
|
|
_db.SaveChanges();
|
|
var ret = _detail.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
else
|
|
{
|
|
Model.activity_kind_detail _detail = new Model.activity_kind_detail();//新增
|
|
if (item.activity_kind_num > 0) { _detail.activity_kind_num = item.activity_kind_num; }
|
|
if (item.actItem_num > 0) { _detail.actItem_num = item.actItem_num; }
|
|
if (item.price.HasValue) { _detail.price = item.price.Value; }
|
|
else { _detail.price = null; }
|
|
if (item.qty.HasValue) { _detail.qty = item.qty.Value; }
|
|
else { _detail.qty = null; }
|
|
_detail.reg_time = DateTime.Now;
|
|
|
|
_db.activity_kind_detail.Add(_detail);
|
|
_db.SaveChanges();
|
|
|
|
var ret = _detail.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
[HttpDelete]
|
|
[Route("api/activity/DeleteActKindDetail/{id}")]//刪除活動分類的detail
|
|
public void DeleteActKindDetail(int id)
|
|
{
|
|
var prod = _db.activity_kind_detail.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
|
|
_db.activity_kind_detail.Remove(prod);
|
|
_db.SaveChanges(); //執行
|
|
|
|
}
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetActRelaList")]
|
|
public IHttpActionResult GetActRelaList([FromBody] Model.activity q, int page, int pageSize = 100,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{ //if pagesize==-1 get all data
|
|
int this_act_id = q.num;
|
|
if (this_act_id > 0)
|
|
{
|
|
//檢查
|
|
var prod = _db.activities.AsEnumerable().Where(o => o.num == this_act_id).FirstOrDefault();
|
|
if (prod != null)
|
|
{
|
|
int kind = prod.kind ?? 0; //分類
|
|
|
|
var qry = _db.activity_relating.AsQueryable();
|
|
qry = qry.Where(o => o.activity_num == this_act_id);
|
|
qry = qry.OrderBy(o => o.num);
|
|
//IEnumerable<Model.activity_relating> qry1=qry.AsEnumerable();
|
|
IEnumerable<Model.activity_relating> qry1 = null;
|
|
|
|
//var retD = qry1;
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
if (count > 0)
|
|
{
|
|
int i = 1;
|
|
//已有值
|
|
if (pageSize > 0)
|
|
{
|
|
qry1 = qry.ToPagedList(page, pageSize);
|
|
}
|
|
else
|
|
{
|
|
qry1 = qry.ToList();
|
|
}
|
|
var orderDetails = _db.pro_order_detail
|
|
.Where(o => o.pro_order.activity_num == this_act_id)
|
|
.ToList();
|
|
var ret = new
|
|
{
|
|
//list = qry1.ToPagedList(page, pageSize).Select(x => new
|
|
list = qry1.Select(x => new
|
|
{
|
|
id = i++,
|
|
num = x.num,
|
|
|
|
activity_num = x.activity_num,
|
|
act_item_selected = new
|
|
{
|
|
text = x.actItem?.subject,
|
|
val = x.actItem_num,
|
|
},
|
|
price = x.price ?? 0,
|
|
qty = x.qty ?? 0,
|
|
files = x.actItem?.actItem_files.Select(f => new
|
|
{
|
|
num = f.file.num,
|
|
subject = f.file.subject,
|
|
list = orderDetails
|
|
.Where(o => o.actItem_num == x.actItem_num)
|
|
.OrderBy(o => o.print_id)
|
|
.ThenBy(o => o.num)
|
|
.Select(o => new
|
|
{
|
|
num = o.num,
|
|
print_id = o.print_id,
|
|
order_no = o.order_no,
|
|
from_id = o.follower1?.u_name,
|
|
printed_files = o.printed_files,
|
|
isPrinted = (o.printed_files ?? "").Contains("\"" + f.file.num.ToString() + "\""),
|
|
}),
|
|
}),
|
|
}),
|
|
count = count,
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
|
|
}
|
|
else
|
|
{
|
|
//未有資料
|
|
//帶分類預設
|
|
if (kind > 0)
|
|
{
|
|
int i = 1;
|
|
var qry2 = _db.activity_kind_detail.AsEnumerable();
|
|
qry2 = qry2.Where(o => o.activity_kind_num == kind);
|
|
var count2 = qry2.Count(); //pageSize = count2;//一次取回??
|
|
if (pageSize > 0) qry2 = qry2.ToPagedList(page, pageSize);
|
|
var ret = new
|
|
{
|
|
list = qry2.Select(x => new
|
|
{
|
|
id = i++,
|
|
num = 0,
|
|
activity_num = this_act_id,
|
|
act_item_selected = new
|
|
{
|
|
text = x.actItem?.subject,
|
|
val = x.actItem_num,
|
|
},
|
|
price = x.price ?? 0,
|
|
qty = x.qty ?? 0,
|
|
files = new
|
|
{
|
|
num = "",
|
|
subject = "",
|
|
list = new
|
|
{
|
|
num = "",
|
|
from_id = "",
|
|
printed_files = "",
|
|
isPrinted = false,
|
|
},
|
|
},
|
|
}),
|
|
count = count2
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetKindList")]
|
|
public IHttpActionResult GetKindList([FromBody] Model.ViewModel.activity_kind q,
|
|
int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
|
|
{
|
|
var qry = _db.activity_kind.AsEnumerable();
|
|
if (q.num.HasValue && q.num > 0)
|
|
qry = qry.Where(o => o.num == q.num);
|
|
if (!string.IsNullOrEmpty(q.kind))
|
|
qry = qry.Where(o => o.kind != null && o.kind.Contains(q.kind));
|
|
//qry = qry.OrderBy(O => O.kind).ThenBy(o => o.num);
|
|
|
|
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 count = qry.Count(); //pageSize = count;//一次取回??
|
|
if (pageSize <= 0) pageSize = count;
|
|
var ret = new
|
|
{
|
|
list = qry2.ToPagedList(page, pageSize).Select(x => new
|
|
{
|
|
num = x.num,
|
|
kind = new TreeView().RptDash(x.Level) + x.kind,
|
|
|
|
}),
|
|
count = count
|
|
|
|
};
|
|
return Ok(ret);
|
|
}
|
|
|
|
[HttpGet]
|
|
[Route("api/activity/GetKindDate/{id}")]
|
|
public IHttpActionResult GetKindDate(int id)
|
|
{
|
|
if (id > 0)
|
|
{
|
|
var qry = _db.activity_kind.AsEnumerable();
|
|
qry = qry.Where(o => o.num == id);
|
|
var prop3 = qry.FirstOrDefault();
|
|
if (prop3 != null)
|
|
{
|
|
System.Globalization.ChineseLunisolarCalendar chineseDate = new System.Globalization.ChineseLunisolarCalendar();
|
|
|
|
string _calendar = prop3.calendar;
|
|
DateTime _today = DateTime.Now;
|
|
string _startDate_solar = "";
|
|
string _endDate_solar = "";
|
|
string _startDate_lunar = "";
|
|
string _endDate_lunar = "";
|
|
if (_calendar == "國曆")
|
|
{
|
|
DateTime _newDay = Convert.ToDateTime(DateTime.Now.Year + "/" + prop3.month + "/" + prop3.day);
|
|
if (_today.Month >= prop3.month && _today.Day >= prop3.day)
|
|
{
|
|
//過期->預設明年
|
|
_newDay = Convert.ToDateTime(DateTime.Now.AddYears(1).Year + "/" + prop3.month + "/" + prop3.day);
|
|
}
|
|
else
|
|
{
|
|
//未過期->預設今年
|
|
}
|
|
|
|
_startDate_solar = _newDay.ToString("yyyy-MM-dd");
|
|
_endDate_solar = _newDay.ToString("yyyy-MM-dd");
|
|
|
|
DateTime _newDay2 = Convert.ToDateTime(chineseDate.GetYear(_newDay) + "/" + chineseDate.GetMonth(_newDay) + "/" + chineseDate.GetDayOfMonth(_newDay));
|
|
_startDate_lunar = _newDay2.ToString("yyyy-MM-dd");
|
|
_endDate_lunar = _newDay2.ToString("yyyy-MM-dd");
|
|
|
|
//TaiwanLunisolarCalendar tlc = new TaiwanLunisolarCalendar();
|
|
//DateTime _newDay3 = Convert.ToDateTime(tlc.GetYear(_newDay) + "/" + tlc.GetMonth(_newDay) + "/" + tlc.GetDayOfMonth(_newDay));
|
|
// -> TaiwanLunisolarCalendar 民國年農曆
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
var ret = new
|
|
{
|
|
startDate_solar = _startDate_solar,
|
|
endDate_solar = _endDate_solar,
|
|
startDate_lunar = _startDate_lunar,
|
|
endDate_lunar = _endDate_lunar,
|
|
|
|
};
|
|
return Ok(ret);
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/SaveRelatingData")]
|
|
public IHttpActionResult SaveRelatingData([FromBody] Model.activity_relating item)
|
|
{
|
|
if (item.activity_num > 0)
|
|
{
|
|
//if有資料-修改 , else 新增
|
|
if (item.num > 0)
|
|
{
|
|
Model.activity_relating _data = _db.activity_relating.Where(q => q.num == item.num).FirstOrDefault();//修改
|
|
if (_data != null)
|
|
{
|
|
if (item.activity_num > 0) { _data.activity_num = item.activity_num; }
|
|
if (item.actItem_num > 0) { _data.actItem_num = item.actItem_num; }
|
|
if (item.price.HasValue) { _data.price = item.price.Value; }
|
|
else { _data.price = null; }
|
|
if (item.qty.HasValue) { _data.qty = item.qty.Value; }
|
|
else { _data.qty = null; }
|
|
_data.reg_time = DateTime.Now;
|
|
|
|
_db.SaveChanges();
|
|
var ret = _data.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
else
|
|
{
|
|
Model.activity_relating _data = new Model.activity_relating();//新增
|
|
if (item.activity_num > 0) { _data.activity_num = item.activity_num; }
|
|
if (item.actItem_num > 0) { _data.actItem_num = item.actItem_num; }
|
|
if (item.price.HasValue) { _data.price = item.price.Value; }
|
|
else { _data.price = null; }
|
|
if (item.qty.HasValue) { _data.qty = item.qty.Value; }
|
|
else { _data.qty = null; }
|
|
_data.reg_time = DateTime.Now;
|
|
|
|
_db.activity_relating.Add(_data);
|
|
_db.SaveChanges();
|
|
|
|
var ret = _data.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/activity/DeleteRelatingData/{id}")]//刪除活動的相關資料
|
|
public void DeleteRelatingData(int id)
|
|
{
|
|
var prod = _db.activity_relating.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
|
|
_db.activity_relating.Remove(prod);
|
|
_db.SaveChanges(); //執行
|
|
|
|
}
|
|
}
|
|
[HttpPost]
|
|
[Route("api/activity/GetActSparesList")]
|
|
public IHttpActionResult GetActSparesList([FromBody] Model.activity q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
int this_act_id = q.num;
|
|
if (this_act_id > 0)
|
|
{
|
|
//檢查
|
|
var prod = _db.activities.AsEnumerable().Where(o => o.num == this_act_id).FirstOrDefault();
|
|
if (prod != null)
|
|
{
|
|
|
|
|
|
int kind = prod.kind ?? 0; //分類
|
|
|
|
var qry1 = _db.activity_spares.AsEnumerable();
|
|
qry1 = qry1.Where(o => o.activity_num == this_act_id);
|
|
|
|
qry1 = qry1.OrderBy(o => o.num);
|
|
|
|
|
|
var count = qry1.Count(); //pageSize = count;//一次取回??
|
|
int i = 1;
|
|
if (pageSize > 0) qry1 = qry1.ToPagedList(page, pageSize);
|
|
var ret = new
|
|
{
|
|
list = qry1.Select(x => new
|
|
{
|
|
id = i++,
|
|
num = x.num,
|
|
activity_num = x.activity_num,
|
|
act_item_selected = new
|
|
{
|
|
text = x.actItem?.subject,
|
|
val = x.actItem_num,
|
|
},
|
|
demo = x.demo,
|
|
totalqty = (x.actItem.stocks.Where(o => (o.category == (int)Model.stock.type.Purchase || o.category == (int)Model.stock.type.Return)).Select(o => o.qty).Sum() ?? 0) - x.actItem.stocks.Where(o => (o.category == (int)Model.stock.type.Reduce || o.category == (int)Model.stock.type.Rent)).Select(o => o.qty).Sum() ?? 0
|
|
|
|
}),
|
|
count = count,
|
|
};
|
|
|
|
|
|
return Ok(ret);
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/SaveSparesData")]
|
|
public IHttpActionResult SaveSparesData([FromBody] Model.activity_spares item)
|
|
{
|
|
if (item.activity_num > 0)
|
|
{
|
|
//if有資料-修改 , else 新增
|
|
if (item.num > 0)
|
|
{
|
|
Model.activity_spares _data = _db.activity_spares.Where(q => q.num == item.num).FirstOrDefault();//修改
|
|
if (_data != null)
|
|
{
|
|
if (item.activity_num > 0) { _data.activity_num = item.activity_num; }
|
|
if (item.actItem_num > 0) { _data.actItem_num = item.actItem_num; }
|
|
|
|
_data.demo = item.demo;
|
|
_data.reg_time = DateTime.Now;
|
|
|
|
_db.SaveChanges();
|
|
var ret = _data.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
else
|
|
{
|
|
Model.activity_spares _data = new Model.activity_spares();//新增
|
|
if (item.activity_num > 0) { _data.activity_num = item.activity_num; }
|
|
if (item.actItem_num > 0) { _data.actItem_num = item.actItem_num; }
|
|
|
|
_data.demo = item.demo;
|
|
_data.reg_time = DateTime.Now;
|
|
|
|
_db.activity_spares.Add(_data);
|
|
_db.SaveChanges();
|
|
|
|
var ret = _data.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/activity/DeleteSparesData/{id}")]//刪除活動的備品資料
|
|
public void DeleteSparesData(int id)
|
|
{
|
|
var prod = _db.activity_spares.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
|
|
_db.activity_spares.Remove(prod);
|
|
_db.SaveChanges(); //執行
|
|
|
|
}
|
|
}
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/OrderCheckIn")]
|
|
public IHttpActionResult OrderCheckIn([FromBody] Model.activity_check item)
|
|
{
|
|
if (item.f_num.HasValue && item.activity_num.HasValue && item.qty.HasValue && item.status.HasValue)
|
|
{
|
|
//同一天不能簽到兩次以上
|
|
Model.activity_check check = _db.activity_check
|
|
.Where(q => q.f_num == item.f_num && q.activity_num == item.activity_num && q.status == item.status
|
|
&& (System.Data.Entity.Core.Objects.EntityFunctions.TruncateTime(q.reg_time) == DateTime.Today))
|
|
.FirstOrDefault();
|
|
if (check == null)
|
|
{
|
|
Model.activity_check data = new Model.activity_check();//新增
|
|
data.f_num = item.f_num;
|
|
data.activity_num = item.activity_num;
|
|
data.qty = item.qty;
|
|
data.status = item.status;
|
|
data.reg_time = DateTime.Now;
|
|
|
|
_db.activity_check.Add(data);
|
|
_db.SaveChanges();
|
|
|
|
var ret = data.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetCheckList")]
|
|
public IHttpActionResult GetCheckList([FromBody] Model.ViewModel.activity_check q, int page, int pageSize = 10,
|
|
string sortBy = "", bool sortDesc = false)
|
|
{
|
|
|
|
var qry = _db.activity_check.AsEnumerable();
|
|
|
|
if (!string.IsNullOrEmpty(q.activityTxt))
|
|
qry = qry.Where(o => o.activity.subject.Contains(q.activityTxt.Trim()));
|
|
if (q.status.HasValue && q.status.Value > 0)
|
|
qry = qry.Where(o => o.status == q.status.Value);
|
|
if (q.reg_time1.HasValue)
|
|
qry = qry.Where(o => o.reg_time >= q.reg_time1.Value);
|
|
if (q.reg_time2.HasValue)
|
|
qry = qry.Where(o => o.reg_time < Convert.ToDateTime(q.reg_time2.Value).AddDays(1));
|
|
|
|
if (q.activity_num.HasValue && q.activity_num > 0)
|
|
qry = qry.Where(o => o.activity_num == q.activity_num);
|
|
if (q.check_time.HasValue)
|
|
qry = qry.Where(o => o.reg_time.Value.Date == q.check_time.Value.Date);
|
|
|
|
|
|
if (sortBy.Equals("subject"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.activity_num);
|
|
else
|
|
qry = qry.OrderBy(o => o.activity_num);
|
|
}
|
|
else if (sortBy.Equals("statusTxt"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.status);
|
|
else
|
|
qry = qry.OrderBy(o => o.status);
|
|
}
|
|
else if (sortBy.Equals("qty"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.f_num).ThenBy(o => o.qty);
|
|
else
|
|
qry = qry.OrderBy(o => o.f_num).ThenBy(o => o.qty);
|
|
}
|
|
else if (sortBy.Equals("reg_time_date"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.reg_time);
|
|
else
|
|
qry = qry.OrderBy(o => o.reg_time);
|
|
}
|
|
else if (sortBy.Equals("reg_time_time"))
|
|
{
|
|
if (sortDesc)
|
|
qry = qry.OrderByDescending(o => o.reg_time.Value.TimeOfDay);
|
|
else
|
|
qry = qry.OrderBy(o => o.reg_time.Value.TimeOfDay);
|
|
}
|
|
else
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
|
|
var tdesc = publicFun.enum_desc<Model.activity_check.keyin1>();
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
if (pageSize > 0) qry = qry.ToPagedList(page, pageSize);
|
|
var ret = new
|
|
{
|
|
list = qry.Select(x => new
|
|
{
|
|
num = x.num,
|
|
subject = x.activity?.subject,
|
|
status = x.status,
|
|
statusTxt = x.status != null ? tdesc[x.status ?? 1] : "",
|
|
qty = x.qty,
|
|
//u_name = x.f_num.HasValue? x.follower.u_name :"",
|
|
u_name = x.follower?.u_name,
|
|
//reg_timeDate = x.reg_time?.Date,
|
|
reg_time = x.reg_time,
|
|
|
|
}),
|
|
count = count
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/activity/DeleteCheck/{id}")]
|
|
public void DeleteCheck(int id)
|
|
{
|
|
var prod = _db.activity_check.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
|
|
_db.activity_check.Remove(prod);
|
|
_db.SaveChanges(); //執行
|
|
|
|
}
|
|
}
|
|
|
|
[HttpDelete]
|
|
[Route("api/activity/DeleteAllCheck/{nums}")]
|
|
public void DeleteAllCheck(string nums)
|
|
{
|
|
if (!string.IsNullOrEmpty(nums))
|
|
{
|
|
string[] num = nums.Split(',');
|
|
int[] ids = new int[num.Length];
|
|
for (int i = 0; i < num.Length; i++)
|
|
{
|
|
if (!string.IsNullOrEmpty(num[i]))
|
|
ids[i] = Convert.ToInt32(num[i]);
|
|
}
|
|
var prod = _db.activity_check.AsEnumerable().Where(q => ids.Contains(q.num)).ToList();
|
|
if (prod.Count() > 0)
|
|
{
|
|
|
|
_db.activity_check.RemoveRange(prod);
|
|
_db.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetActivityBoard")]
|
|
public IHttpActionResult GetActivityBoard([FromBody] Model.ViewModel.activity_check q)
|
|
{
|
|
DateTime _now = DateTime.Now;
|
|
|
|
var qry = _db.activities.AsEnumerable();
|
|
|
|
if (q.reg_time1.HasValue)
|
|
qry = qry.Where(o => o.reg_time >= q.reg_time1.Value);
|
|
if (q.reg_time2.HasValue)
|
|
qry = qry.Where(o => o.reg_time < Convert.ToDateTime(q.reg_time2.Value).AddDays(1));
|
|
|
|
|
|
qry = qry.Where(o => (_now >= o.startDate_solar && _now < o.endDate_lunar) || (_now < o.startDate_solar && o.dueDate?.Date.CompareTo(_now) <= 180));
|
|
|
|
qry = qry.OrderByDescending(o => o.num);
|
|
|
|
qry = qry.Take(10);
|
|
|
|
|
|
|
|
|
|
var tdesc = publicFun.enum_desc<Model.activity_check.keyin1>();
|
|
var r1 = qry.ToList();
|
|
var r2 = r1.Select(x => new { num = x.num, subject = x.subject });
|
|
var count = qry.Count();
|
|
var ret = new
|
|
{
|
|
list = qry.ToList().Select(x => new
|
|
{
|
|
num = x.num,
|
|
subject = x.subject,
|
|
startDate_solar = x.startDate_solar,
|
|
endDate_solar = x.endDate_solar,
|
|
startDate_lunar = x.startDate_lunar,
|
|
endDate_lunar = x.endDate_lunar,
|
|
order_qty = x.pro_order.Count(),
|
|
check_qty_yest = x.activity_check.Where(c => _now.Date.CompareTo(c.reg_time?.Date) == 1).Count(),
|
|
check_qty_today = x.activity_check.Where(c => _now.Date.CompareTo(c.reg_time?.Date) == 0).Count(),
|
|
status = (_now >= x.startDate_solar && _now < x.endDate_lunar) ? "進行中" : ((_now < x.startDate_solar && x.dueDate?.Date.CompareTo(_now) <= 180) ? "報名中" : "") //進行中: 活動日期已開始,未結束 ; 報名中: 未開始,報名未截止近半年(?)的活動
|
|
|
|
}),
|
|
count = count
|
|
};
|
|
|
|
|
|
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return Ok(ret);
|
|
}
|
|
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/activity/GetCategoryKindList")]
|
|
public IHttpActionResult GetCategoryKindList([FromBody] Model.ViewModel.activity_category_kind q,
|
|
int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
|
|
{
|
|
var qry = _db.activity_category_kind.AsEnumerable();
|
|
if (q.num.HasValue && q.num > 0)
|
|
qry = qry.Where(o => o.num == q.num);
|
|
if (!string.IsNullOrEmpty(q.kind))
|
|
qry = qry.Where(o => o.kind != null && o.kind.Contains(q.kind));
|
|
qry = qry.OrderBy(O => O.kind).ThenBy(o => o.num);
|
|
|
|
var count = qry.Count(); //pageSize = count;//一次取回??
|
|
if (pageSize > 0) qry = qry.ToPagedList(page, pageSize);
|
|
var ret = new
|
|
{
|
|
list = qry.Select(x => new
|
|
{
|
|
num = x.num,
|
|
kind = x.kind,
|
|
}),
|
|
count = count
|
|
|
|
};
|
|
return Ok(ret);
|
|
}
|
|
|
|
}
|