1277 lines
52 KiB
C#
1277 lines
52 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 Model;
|
||
using System.IdentityModel.Metadata;
|
||
using MyWeb;
|
||
using DocumentFormat.OpenXml.Drawing.Charts;
|
||
|
||
|
||
// api/order
|
||
//[ezAuthorize(Roles = "admin")]//群組:*
|
||
//[ezAuthorize]
|
||
public class orderController : ApiController
|
||
{
|
||
private Model.ezEntities _db = new Model.ezEntities();
|
||
// GET api/<controller>
|
||
// TODO: CRITICAL - 無參數 Get() 會載入所有訂單到內存(可能數千筆)
|
||
// 建議:停用此方法,強制使用分頁版本 Get(page, pageSize)
|
||
// 或改為:return _db.pro_order.AsQueryable(); 讓客戶端決定如何處理
|
||
public IEnumerable<Model.pro_order> Get()
|
||
{
|
||
var list = _db.pro_order.ToList();
|
||
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
||
return list;
|
||
}
|
||
|
||
public IEnumerable<Model.pro_order> Get(int page, int pageSize = 10,
|
||
string sortBy = "", bool sortDesc = false)
|
||
{
|
||
var list = _db.pro_order.OrderBy(o => o.order_no).ToPagedList(page, pageSize);
|
||
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
||
return list;
|
||
}
|
||
|
||
// GET api/<controller>/5
|
||
public Model.pro_order Get(string id)
|
||
{
|
||
var item = _db.pro_order.Where(q => q.order_no == id).FirstOrDefault();
|
||
//if (item == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
||
return item;
|
||
}
|
||
|
||
// POST api/<controller>
|
||
public void Post([FromBody] Model.pro_order item)
|
||
{
|
||
}
|
||
|
||
// PUT api/<controller>/5
|
||
public void Put(int id, [FromBody] Model.pro_order item)
|
||
{
|
||
}
|
||
|
||
// DELETE api/<controller>/5
|
||
public void Delete(string id)
|
||
{
|
||
var prod = _db.pro_order.Where(q => q.order_no == id).FirstOrDefault(); //刪除該筆資料
|
||
if (prod != null)
|
||
{
|
||
//刪除掛單表單
|
||
var prod3 = _db.bed_order.Where(q => q.order_no == id).ToList();
|
||
if (prod3.Count > 0)
|
||
{
|
||
//刪除掛單明細
|
||
foreach (var item3 in prod3)
|
||
{
|
||
var prod4 = _db.bed_order_detail.Where(q => q.bed_order_no == item3.bed_order_no).ToList();
|
||
if (prod4.Count > 0)
|
||
{
|
||
_db.bed_order_detail.RemoveRange(prod4); //查詢結果全部刪除
|
||
}
|
||
}
|
||
|
||
_db.bed_order.RemoveRange(prod3); //查詢結果全部刪除
|
||
}
|
||
|
||
_db.pro_order_detail.RemoveRange(prod.pro_order_detail);
|
||
|
||
_db.pro_order.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.Order, (int)Model.admin_log.Status.Delete, prod.order_no);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
[HttpDelete]
|
||
[Route("api/order/DeleteItem/{id}")]
|
||
public void DeleteDetail(int id) //刪除訂單明細
|
||
{
|
||
if (id > 0)
|
||
{
|
||
var prod = _db.pro_order_detail.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
||
if (prod != null)
|
||
{
|
||
//刪除掛單表單
|
||
var prod3 = _db.bed_order.Where(q => q.order_no == prod.order_no).ToList();
|
||
if (prod3.Count > 0) //count = 1
|
||
{
|
||
//刪除掛單明細
|
||
foreach (var item3 in prod3)
|
||
{
|
||
var prod4 = _db.bed_order_detail.Where(q => q.bed_order_no == item3.bed_order_no).ToList();
|
||
if (prod4.Count > 0)
|
||
{
|
||
_db.bed_order_detail.RemoveRange(prod4); //查詢結果全部刪除
|
||
}
|
||
}
|
||
|
||
_db.bed_order.RemoveRange(prod3); //查詢結果全部刪除
|
||
}
|
||
|
||
_db.pro_order_detail.Remove(prod);
|
||
_db.SaveChanges(); //執行
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
[HttpDelete]
|
||
[Route("api/order/DeleteAll/{nums}")]
|
||
public void DeleteAll(string nums)
|
||
{
|
||
if (!string.IsNullOrEmpty(nums))
|
||
{
|
||
var ids = nums.TrimEnd(',').Split(',');
|
||
|
||
var prod = _db.pro_order.Where(q => ids.Contains(q.order_no)).ToList();
|
||
if (prod.Count() > 0)
|
||
{
|
||
var prod2 = _db.pro_order_detail.Where(q => ids.Contains(Convert.ToString(q.order_no))).ToList();
|
||
if (prod2.Count > 0)
|
||
{
|
||
foreach (var item2 in prod2)
|
||
{
|
||
var prod3 = _db.bed_order.Where(q => q.order_no == item2.order_no && q.o_detail_id == item2.num).ToList();
|
||
if (prod3.Count > 0)
|
||
{
|
||
foreach (var item3 in prod3)
|
||
{
|
||
var prod4 = _db.bed_order_detail.Where(q => q.bed_order_no == item3.bed_order_no).ToList();
|
||
if (prod4.Count > 0)
|
||
{
|
||
_db.bed_order_detail.RemoveRange(prod4);
|
||
}
|
||
}
|
||
|
||
_db.bed_order.RemoveRange(prod3);
|
||
}
|
||
|
||
|
||
//var prod32 = _db.bed_order.AsEnumerable().Where(q => q.order_no == item2.order_no && q.o_detail_id == item2.num).ToList();
|
||
//var prod42 = _db.bed_order_detail.AsEnumerable().Where(q => prod32.Select(qf => qf.order_no).ToArray().Contains(q.bed_order_no)).ToList();
|
||
//_db.bed_order_detail.RemoveRange(prod42);
|
||
//_db.bed_order.RemoveRange(prod32);
|
||
|
||
}
|
||
|
||
_db.pro_order_detail.RemoveRange(prod2);
|
||
//_db.SaveChanges();
|
||
}
|
||
|
||
_db.pro_order.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.Order, (int)Model.admin_log.Status.Delete, admin_log.LogViewBtn(prod.Select(x => x.order_no).ToList()));
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
[HttpGet]
|
||
[Route("api/order/count")]
|
||
public int Count()
|
||
{
|
||
var count = _db.pro_order.Count();
|
||
return count;
|
||
}
|
||
[HttpPost]
|
||
[Route("api/order/GetList")]
|
||
public IHttpActionResult GetList([FromBody] Model.ViewModel.pro_order q, int page, int pageSize = 10,
|
||
string sortBy = "", bool sortDesc = false)
|
||
{
|
||
|
||
var qry = _db.pro_order.AsQueryable();
|
||
//var aIDt = _db.actItems.AsEnumerable().Where(f => f.subject.Contains(q.actItemTxt.Trim())).Select(f => f.num);//品項
|
||
|
||
|
||
if (!string.IsNullOrEmpty(q.order_no))
|
||
qry = qry.Where(o => o.order_no.Contains(q.order_no.Trim()));
|
||
if (!string.IsNullOrEmpty(q.keyin1))
|
||
qry = qry.Where(o => o.keyin1.Contains(q.keyin1));
|
||
if (q.f_num.HasValue && q.f_num > 0)
|
||
qry = qry.Where(o => o.f_num == q.f_num);
|
||
if (q.activity_num.HasValue && q.activity_num > 0)
|
||
qry = qry.Where(o => o.activity_num == q.activity_num);
|
||
if (q.up_time1.HasValue)
|
||
qry = qry.Where(o => o.up_time >= q.up_time1.Value);
|
||
if (q.up_time2.HasValue)
|
||
qry = qry.Where(o => o.up_time < Convert.ToDateTime(q.up_time2.Value).AddDays(1));
|
||
if (!string.IsNullOrEmpty(q.address))
|
||
qry = qry.Where(o => o.address.Contains(q.address.Trim()));
|
||
if (!string.IsNullOrEmpty(q.subject))
|
||
qry = qry.Where(o => o.activity_num.HasValue && o.activity.subject.Contains(q.subject.Trim()));
|
||
if (!string.IsNullOrEmpty(q.u_name))
|
||
qry = qry.Where(o => o.f_num.HasValue && o.follower.u_name.Contains(q.u_name.Trim()));
|
||
if (!string.IsNullOrEmpty(q.introducerTxt))
|
||
qry = qry.Where(o => o.introducer.HasValue && o.follower1.u_name.Contains(q.introducerTxt.Trim()));
|
||
|
||
if (!string.IsNullOrEmpty(q.actItemTxt))
|
||
{
|
||
//qry = qry.Where(o => o.pro_order_detail.Where(f2 => f2.order_no == o.order_no && aIDt.ToArray().Contains(f2.actItem_num?.ToString())).Count() > 0);
|
||
// qry = qry.Where(o => o.pro_order_detail.Where(f2 => f2.order_no == o.order_no && aIDt.Any(x => x == f2.actItem_num)).Count() > 0);
|
||
|
||
qry = qry.Where(o => o.pro_order_detail.Where(f2 => f2.actItem_num.HasValue && f2.actItem.subject.Contains(q.actItemTxt.Trim())).Count() > 0);
|
||
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(q.country))
|
||
qry = qry.Where(o => o.f_num != null && o.follower != null && o.follower.country == q.country);
|
||
if (!string.IsNullOrEmpty(q.country2))
|
||
{
|
||
if (q.country2 == "1")
|
||
{
|
||
qry = qry.Where(o => o.f_num != null && o.follower != null && o.follower.country == "158");
|
||
}
|
||
else if (q.country2 == "2")
|
||
{
|
||
qry = qry.Where(o => o.f_num != null && o.follower != null && o.follower.country != "158");
|
||
|
||
}
|
||
}
|
||
|
||
|
||
if (sortBy.Equals("order_no"))
|
||
{
|
||
if (sortDesc)
|
||
qry = qry.OrderByDescending(o => o.order_no);
|
||
else
|
||
qry = qry.OrderBy(o => o.order_no);
|
||
}
|
||
else if (sortBy.Equals("keyin1_txt"))
|
||
{
|
||
if (sortDesc)
|
||
qry = qry.OrderByDescending(o => o.keyin1);
|
||
else
|
||
qry = qry.OrderBy(o => o.keyin1);
|
||
}
|
||
else if (sortBy.Equals("up_time"))
|
||
{
|
||
if (sortDesc)
|
||
qry = qry.OrderByDescending(o => o.up_time);
|
||
else
|
||
qry = qry.OrderBy(o => o.up_time);
|
||
}
|
||
else if (sortBy.Equals("u_name"))
|
||
{
|
||
if (sortDesc)
|
||
qry = qry.OrderByDescending(o => o.follower != null ? o.follower.u_name : "");
|
||
else
|
||
qry = qry.OrderBy(o => o.follower != null ? o.follower.u_name : "");
|
||
}
|
||
else if (sortBy.Equals("subject"))
|
||
{
|
||
if (sortDesc)
|
||
qry = qry.OrderByDescending(o => o.activity != null ? o.activity.subject : "");
|
||
else
|
||
qry = qry.OrderBy(o => o.activity != null ? o.activity.subject : "");
|
||
}
|
||
else
|
||
qry = qry.OrderByDescending(o => o.reg_time);
|
||
|
||
var count = qry.Count(); //pageSize = count;//一次取回??
|
||
var ret = new
|
||
{
|
||
list = qry.ToPagedList(page, pageSize).Select(x => new
|
||
{
|
||
order_no = x.order_no,
|
||
f_num = x.f_num,
|
||
u_name = x.f_num.HasValue ? x.follower.u_name : "",
|
||
activity_num = x.activity_num,
|
||
subject = x.activity_num.HasValue ? x.activity.subject : "",
|
||
keyin1 = x.keyin1,
|
||
up_time = x.up_time,
|
||
keyin1_txt = Model.pro_order.keyin1_value_to_text(x.keyin1),
|
||
}),
|
||
count = count
|
||
};
|
||
|
||
|
||
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
||
return Ok(ret);
|
||
}
|
||
|
||
[HttpPost]
|
||
[Route("api/order/GetItemList")]
|
||
public IHttpActionResult GetItemList([FromBody] Model.ViewModel.pro_order_detail q, int page, int pageSize = 10,
|
||
string sortBy = "", bool sortDesc = false)
|
||
{
|
||
string order_no = q.order_no;
|
||
if (!string.IsNullOrEmpty(order_no))
|
||
{
|
||
//檢查
|
||
var prod = _db.pro_order.Where(o => o.order_no == order_no).FirstOrDefault();
|
||
if (prod != null)
|
||
{
|
||
try
|
||
{
|
||
|
||
int activity = prod.activity_num.HasValue ? prod.activity_num.Value : 0; //活動
|
||
var bedDt = _db.bed_order_detail.Where(b => b.bed_order.order_no == order_no); ;//掛單明細
|
||
|
||
|
||
//var qry1 = _db.pro_order_detail.AsEnumerable();
|
||
//qry1 = qry1.Where(o => o.order_no == order_no);
|
||
//var qry1 = prod.pro_order_detail.AsEnumerable();
|
||
var qry1 = prod.pro_order_detail.AsQueryable();
|
||
|
||
//if (!string.IsNullOrEmpty(q.subject))
|
||
// qry = qry.Where(o => o.subject.Contains(q.subject));
|
||
|
||
|
||
if (q.actItem_kind_num.HasValue)
|
||
{
|
||
//項目分類
|
||
var _subKinds = new TreeView().subKinds(_db.actItem_kind.Select(o => new TreeItem()
|
||
{
|
||
num = o.num,
|
||
root = o.root,
|
||
}).ToList(), q.actItem_kind_num.Value);
|
||
qry1 = qry1.Where(o => o.actItem.kind == q.actItem_kind_num || _subKinds.Any(s => s == o.actItem.kind));
|
||
}
|
||
|
||
if (sortBy.Equals("subject"))
|
||
{
|
||
if (sortDesc)
|
||
qry1 = qry1.OrderByDescending(o => o.actItem.subject);
|
||
else
|
||
qry1 = qry1.OrderBy(o => o.actItem.subject);
|
||
}
|
||
else
|
||
{
|
||
qry1 = qry1.OrderByDescending(o => o.num);
|
||
|
||
}
|
||
|
||
var tdesc = publicFun.enum_desc<Model.pro_order.detailKeyin1>();
|
||
|
||
int i = 1;
|
||
//已有值
|
||
var qry1_list = qry1.ToList();
|
||
if (pageSize > 0) qry1_list =
|
||
(List<pro_order_detail>)qry1_list.ToPagedList(page, pageSize);
|
||
var count = qry1_list.Count();
|
||
|
||
var ret = new
|
||
{
|
||
list = qry1_list.Select(x => new
|
||
{
|
||
id = i++,
|
||
num = x.num,
|
||
order_no = x.order_no,
|
||
actitem_num_selected = new
|
||
{
|
||
text = x.actItem_num.HasValue ? x.actItem.subject : "",
|
||
val = x.actItem_num.HasValue ? x.actItem_num.Value : 0,
|
||
},
|
||
parent_num = x.parent_num,
|
||
f_num_selected = new
|
||
{
|
||
text = x.f_num.HasValue ? x.follower.u_name : "",
|
||
val = x.f_num.HasValue ? x.f_num.Value : 0,
|
||
},
|
||
f_num_tablet = x.f_num_tablet,
|
||
print_id = x.print_id,
|
||
address = x.address,
|
||
due_date = x.due_date,
|
||
start_date = x.start_date,
|
||
extend_date = x.extend_date,
|
||
from_id_selected = new
|
||
{
|
||
text = x.from_id.HasValue ? x.follower1.u_name : "",
|
||
val = x.from_id.HasValue ? x.from_id : 0,
|
||
},
|
||
from_id_tablet = x.from_id_tablet,
|
||
price = x.price ?? 0,
|
||
qty = x.qty ?? 0,
|
||
writeBedQty = bedDt.Where(b => b.bed_order.o_detail_id.Value == x.num && b.checkIn_date.HasValue && b.bed_kind_detail_id.HasValue).Count(), //已劃數量
|
||
notBedQty = bedDt.Where(b => b.bed_order.o_detail_id.Value == x.num && (!b.checkIn_date.HasValue || !b.bed_kind_detail_id.HasValue)).Count(), //未劃數量
|
||
//total = x.total.HasValue ? x.total.Value : 0,
|
||
category = x.actItem?.category,
|
||
//pay = x.pay ?? 0,
|
||
pay = x.pro_order_record.Select(c => c.price).Sum(),
|
||
pay_date = x.pay_date,
|
||
keyin1_selected = new
|
||
{
|
||
text = tdesc[x.keyin1.HasValue && x.keyin1.Value > 0 ? x.keyin1.Value : 1],
|
||
val = x.keyin1,
|
||
},
|
||
demo = x.demo,
|
||
files = x.actItem?.actItem_files.Select(f => new
|
||
{
|
||
num = f.file.num,
|
||
subject = f.file.subject,
|
||
word = f.file.word,
|
||
cuz_column = f.file.customize_data ?? "", //??
|
||
paperset = f.file.paperset ?? "",
|
||
}),
|
||
customize_data = x.customize_data ?? "",
|
||
customize_data_comb = new
|
||
{
|
||
from_id_cuz_data = "",
|
||
activity_cuz_data = "",
|
||
actitem_cuz_data = "",
|
||
order_cuz_data = "",
|
||
},
|
||
printed_files = x.printed_files ?? "",
|
||
isPackage = (x.actItem.act_bom
|
||
.Any(ab => ab.package_num == null && ab.item_num != null)
|
||
? 1 : 0),
|
||
bom_order = (x.actItem.act_bom
|
||
.Any(ab => ab.package_num == null && ab.item_num != null)
|
||
? x.num.ToString()
|
||
: (x.parent_num.ToString() + x.num.ToString())
|
||
),
|
||
//cash_record = x.pro_order_record.Select( c => new {
|
||
// c,
|
||
// //pay_kind = tdesc2[c.payment.HasValue && x.keyin1.Value > 0 ? x.keyin1.Value : 1],
|
||
//}),
|
||
|
||
})
|
||
.ToList()
|
||
.OrderByDescending(x => (x.isPackage + (x.parent_num == null ? 0 : 1)))
|
||
//.ThenBy(x => (x.parent_num == null ? 1 : 2)) // Top-level items first
|
||
.ThenBy(x => x.bom_order) // Group child items with their parents
|
||
.ThenBy(x => x.parent_num) // Group child items with their parents
|
||
.ThenBy(x => x.num) // Order by num within each group
|
||
.ToList(),
|
||
count = count,
|
||
};
|
||
|
||
if (prod.pro_order_detail.Count() == 0)
|
||
{
|
||
//未有資料
|
||
//帶活動預設
|
||
if (activity > 0)
|
||
{
|
||
i = 1;
|
||
//var qry2 = _db.activity_relating.AsEnumerable();
|
||
//qry2 = qry2.Where(o => o.activity_num == activity);
|
||
var qry2 = _db.activity_relating
|
||
.Where(o => o.activity_num == activity);
|
||
if (q.actItem_kind_num.HasValue)
|
||
{
|
||
//項目分類
|
||
var _subKinds = new TreeView().subKinds(_db.actItem_kind.Select(o => new TreeItem()
|
||
{
|
||
num = o.num,
|
||
root = o.root,
|
||
}).ToList(), q.actItem_kind_num.Value);
|
||
qry2 = qry2.Where(o => o.actItem.kind == q.actItem_kind_num || _subKinds.Any(s => s == o.actItem.kind));
|
||
}
|
||
|
||
|
||
var count2 = qry2.Count();
|
||
pageSize = (pageSize <= 0) ? count2 : pageSize;
|
||
var qry2a = qry2.Select(ar => new
|
||
{
|
||
ar.num,
|
||
order_no = q.order_no,
|
||
actItem = ar.actItem,
|
||
actitem_num_selected = new
|
||
{
|
||
text = ar.actItem.subject,
|
||
val = ar.actItem_num,
|
||
},
|
||
parent_num = q.num,
|
||
f_num_selected = new
|
||
{
|
||
text = "",
|
||
val = 0,
|
||
},
|
||
f_num_tablet = "",
|
||
address = "",
|
||
// due_date =
|
||
// start_date =
|
||
// extend_date =
|
||
from_id_selected = new
|
||
{
|
||
text = "",
|
||
val = 0,
|
||
},
|
||
from_id_tablet = "",
|
||
price = ar.price > 0 ? ar.price : ar.actItem.price,
|
||
ar.qty,
|
||
//writeBedQty
|
||
//notBedQty
|
||
category = ar.actItem.category,
|
||
pay = 0,
|
||
//pay_date
|
||
keyin1_selected = new
|
||
{
|
||
text = "",
|
||
val = 0,
|
||
},
|
||
demo = ar.actItem.demo,
|
||
files = ar.actItem.actItem_files.Select(af => new
|
||
{
|
||
num = af.file.num,
|
||
subject = af.file.subject,
|
||
word = af.file.word,
|
||
cuz_column = af.file.customize_data ?? "", //定義欄位需求
|
||
paperset = af.file.paperset ?? "",
|
||
}),
|
||
customize_data = ar.actItem.customize_data ?? "",
|
||
customize_data_comb = new
|
||
{
|
||
from_id_cuz_data = "",
|
||
activity_cuz_data = "",
|
||
actitem_cuz_data = ar.actItem.customize_data,
|
||
order_cuz_data = "",
|
||
},
|
||
printed_files = "",
|
||
ar.reg_time,
|
||
//actItem = ar.actItem,
|
||
isPackage = ar.actItem.act_bom
|
||
.Any(ab => ab.package_num == null && ab.item_num != null)
|
||
? 1 : 0
|
||
});
|
||
//var orderedQry2a = sortDesc
|
||
// ? qry2a.OrderByDescending(ar => ar.num)
|
||
// : qry2a.OrderBy(ar => ar.num);
|
||
|
||
var orderedQry2a = qry2a
|
||
.OrderByDescending(ar => ar.isPackage) // Ensure top-level items come first
|
||
.ThenBy(ar => sortDesc ? 0 : 1) // This is a trick to conditionally switch between ThenBy and ThenByDescending
|
||
.ThenBy(ar => sortDesc ? ar.num : 0) // Apply existing sort order based on sortDesc
|
||
.ThenByDescending(ar => sortDesc ? 0 : ar.num); // Apply existing sort order based on sortDesc
|
||
|
||
var ret2 = new
|
||
{
|
||
list = orderedQry2a.ToList()
|
||
//.ToPagedList(page, pageSize)
|
||
.Select(x => new
|
||
{
|
||
id = i++,
|
||
num = 0, //?
|
||
order_no = order_no, // ?
|
||
actitem_num_selected = new
|
||
{
|
||
text = x.actItem.subject,
|
||
val = x.actItem.num,
|
||
},
|
||
f_num_selected = new
|
||
{
|
||
text = "",
|
||
val = 0,
|
||
},
|
||
address = "",
|
||
due_date = DateTime.Today.AddMonths(x.actItem.cycle ?? 0).ToString("yyyy-MM-dd"), // 期滿日期:依據 項目維護 所設定的 收費週期 計算後帶入日期
|
||
start_date = DateTime.Today.ToString("yyyy-MM-dd"), //預設今天
|
||
extend_date = (x.actItem.extend ?? "").Equals("Y") ? DateTime.Today.AddMonths(x.actItem.cycle ?? 0).ToString("yyyy-MM-dd") : "", //應續約日:預設的日期值與期滿日期相同(項目是"續約項目"者)
|
||
from_id_selected = new
|
||
{
|
||
text = prod.f_num.HasValue ? prod.follower.u_name : "", //預設帶報名者
|
||
val = prod.f_num.HasValue ? prod.f_num.Value : 0,
|
||
},
|
||
price = x.price ?? 0,
|
||
qty = x.qty ?? 0,
|
||
writeBedQty = 0,
|
||
notBedQty = 0,
|
||
//total = x.price.HasValue && x.qty.HasValue ? Convert.ToDouble(x.price.Value) * Convert.ToInt32(x.qty.Value) :0,
|
||
category = x.actItem?.category,
|
||
pay = 0,
|
||
pay_date = "",
|
||
keyin1_selected = new
|
||
{
|
||
text = tdesc[1],
|
||
val = 1,
|
||
},
|
||
demo = "",
|
||
files = x.actItem?.actItem_files.Select(f => new
|
||
{
|
||
num = f.file.num,
|
||
subject = f.file.subject,
|
||
word = f.file.word,
|
||
cuz_column = f.file.customize_data ?? "", //定義欄位需求
|
||
paperset = f.file.paperset ?? "",
|
||
}),
|
||
customize_data = "",
|
||
customize_data_comb = new
|
||
{
|
||
from_id_cuz_data = prod.f_num.HasValue ? prod.follower.customize_data ?? "" : "",
|
||
activity_cuz_data = prod.activity_num.HasValue ? prod.activity.customize_data ?? "" : "",
|
||
actitem_cuz_data = x.actItem.customize_data,
|
||
order_cuz_data = prod.customize_data,
|
||
},
|
||
printed_files = "",
|
||
x.isPackage
|
||
//cash_record = new { },
|
||
}),
|
||
count = count2
|
||
};
|
||
|
||
|
||
if (ret2.list == null)
|
||
{
|
||
throw new HttpResponseException(HttpStatusCode.NotFound);
|
||
}
|
||
return Ok(ret2);
|
||
|
||
}
|
||
else
|
||
{
|
||
//不須帶預設資料,自行新增項目
|
||
return Ok();
|
||
}
|
||
}
|
||
else
|
||
return Ok(ret);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return NotFound();
|
||
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return NotFound();
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
return NotFound();
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
[HttpPost]
|
||
[Route("api/order/SaveDetailData")]
|
||
public IHttpActionResult SaveDetailData([FromBody] Model.pro_order_detail item)
|
||
{
|
||
if (!string.IsNullOrEmpty(item.order_no))
|
||
{
|
||
//if有資料-修改 , else 新增
|
||
if (item.num > 0)
|
||
{
|
||
Model.pro_order_detail order = _db.pro_order_detail
|
||
.Include("actItem")
|
||
.Include("actItem.act_bom")
|
||
.Where(q => q.num == item.num)
|
||
.FirstOrDefault();//修改
|
||
if (order != null)
|
||
{
|
||
order.actItem_num = (item.actItem_num.HasValue && item.actItem_num.Value > 0)
|
||
? item.actItem_num : null;
|
||
order.f_num = (item.f_num.HasValue && item.f_num.Value > 0)
|
||
? item.f_num : null;
|
||
order.from_id = (item.from_id.HasValue && item.from_id.Value > 0)
|
||
? item.from_id : null;
|
||
order.f_num_tablet = item.f_num_tablet;
|
||
order.from_id_tablet = item.from_id_tablet;
|
||
order.print_id = item.GenerateSequentialId();
|
||
order.address = item.address;
|
||
order.start_date = item.start_date.HasValue
|
||
? item.start_date : null;
|
||
order.due_date = item.due_date.HasValue
|
||
? item.due_date : null;
|
||
order.extend_date = item.extend_date.HasValue
|
||
? item.extend_date : null;
|
||
order.price = item.price.HasValue
|
||
? item.price : null;
|
||
order.qty = (item.qty.HasValue && item.qty.Value > 0)
|
||
? item.qty : null;
|
||
order.pay = item.pay.HasValue
|
||
? item.pay : null;
|
||
order.pay_date = item.pay_date.HasValue
|
||
? item.pay_date : null;
|
||
order.keyin1 = item.keyin1;
|
||
order.demo = item.demo;
|
||
order.customize_data = item.customize_data;
|
||
order.UpdateTime = DateTime.Now;
|
||
_db.SaveChanges();
|
||
var ret = new
|
||
{
|
||
num = order.num,
|
||
customize_data = order.customize_data,
|
||
print_id = order.print_id,
|
||
f_num_tablet = order.f_num_tablet,
|
||
isPackage = order.actItem != null ? (order.actItem.act_bom
|
||
.Any(ab => ab.package_num == null && ab.item_num != null)
|
||
? 1 : 0) : 0
|
||
};
|
||
return Ok(ret);
|
||
|
||
}
|
||
else
|
||
{
|
||
return NotFound();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Model.pro_order_detail orderDetail = new Model.pro_order_detail()
|
||
{
|
||
order_no = item.order_no,
|
||
parent_num = item.parent_num,
|
||
actItem_num = (item.actItem_num.HasValue && item.actItem_num.Value > 0)
|
||
? item.actItem_num : null,
|
||
f_num = (item.f_num.HasValue && item.f_num.Value > 0)
|
||
? item.f_num : null,
|
||
from_id = (item.from_id.HasValue && item.from_id.Value > 0)
|
||
? item.from_id : null,
|
||
f_num_tablet = item.f_num_tablet,
|
||
from_id_tablet = item.from_id_tablet,
|
||
print_id = item.GenerateSequentialId(),
|
||
address = item.address,
|
||
start_date = item.start_date.HasValue
|
||
? item.start_date : null,
|
||
due_date = item.due_date.HasValue
|
||
? item.due_date : null,
|
||
extend_date = item.extend_date.HasValue
|
||
? item.extend_date : null,
|
||
price = item.price.HasValue
|
||
? item.price : null,
|
||
qty = (item.qty.HasValue && item.qty.Value > 0)
|
||
? item.qty : null,
|
||
pay = item.pay.HasValue
|
||
? item.pay : null,
|
||
pay_date = item.pay_date.HasValue
|
||
? item.pay_date : null,
|
||
keyin1 = item.keyin1,
|
||
demo = item.demo,
|
||
customize_data = item.customize_data,
|
||
UpdateTime = DateTime.Now,
|
||
};
|
||
_db.pro_order_detail.Add(orderDetail);
|
||
_db.SaveChanges();
|
||
|
||
// 重新查詢以獲取完整的關聯數據
|
||
var savedOrder = _db.pro_order_detail
|
||
.Include("actItem")
|
||
.Include("actItem.act_bom")
|
||
.FirstOrDefault(x => x.num == orderDetail.num);
|
||
var isPackage = savedOrder.actItem != null ? (savedOrder.actItem.act_bom
|
||
.Any(ab => ab.package_num == null && ab.item_num != null)
|
||
? 1 : 0) : 0;
|
||
var ret = new
|
||
{
|
||
num = savedOrder.num,
|
||
customize_data = savedOrder.customize_data,
|
||
print_id = savedOrder.print_id,
|
||
f_num_tablet = savedOrder.f_num_tablet,
|
||
isPackage = isPackage
|
||
};
|
||
return Ok(ret);
|
||
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return NotFound();
|
||
}
|
||
|
||
}
|
||
|
||
|
||
[HttpPost]
|
||
[Route("api/order/GetUnpayList")]
|
||
public IHttpActionResult GetUnpayList([FromBody] Model.ViewModel.follower q, string order_no, int page, int pageSize = 10,
|
||
string sortBy = "", bool sortDesc = false)
|
||
{
|
||
int _follower = q.num.HasValue && q.num.Value > 0 ? q.num.Value : 0;
|
||
if (_follower > 0)
|
||
{
|
||
try
|
||
{
|
||
|
||
//家族 : 家長是我的人,跟我同家長的人,我的家長本人,我本人
|
||
var ccList = _db.followers.Where(x => x.num == _follower || x.leader == _follower).Select(x => x.num).ToList();
|
||
var qry = _db.followers.Where(f => ccList.Contains(f.num) || (f.leader.HasValue && ccList.Contains(f.leader.Value)));
|
||
|
||
//未付款資料
|
||
var unpayDt = _db.pro_order_detail.AsQueryable();
|
||
var coDt = unpayDt.Where(x => x.keyin1 == (int)Model.pro_order.detailKeyin1.Collection);//只列出報名狀態為"收款中"的項目
|
||
|
||
//未付款訂單
|
||
var orderDt = _db.pro_order.AsQueryable();
|
||
if (!string.IsNullOrEmpty(order_no))
|
||
orderDt = orderDt.Where(x => x.order_no == order_no);
|
||
orderDt = orderDt.Where(x => coDt.Select(d => d.order_no).Contains(x.order_no));
|
||
//orderDt = orderDt.Where(x => qry.Select(d => d.num).Contains(x.f_num.Value));
|
||
orderDt = orderDt.Where(x => qry.Select(f => f.num).Any(f => f == x.f_num));
|
||
orderDt = orderDt.OrderByDescending(x => x.reg_time);
|
||
int i = 1;
|
||
//已有值
|
||
var count = orderDt.Count();
|
||
var ret = new
|
||
{
|
||
list = orderDt.ToPagedList(page, pageSize).Select(x => new
|
||
{
|
||
id = i++,
|
||
order_no = x.order_no,
|
||
up_time = x.up_time,
|
||
reg_time = x.reg_time,
|
||
f_num = x.f_num,
|
||
u_name = x.f_num.HasValue ? x.follower.u_name : "",
|
||
totalPrice = unpayDt.Where(d => d.order_no == x.order_no).Select(o => o.price ?? 0 * o.qty ?? 0).Sum(), //訂單金額
|
||
payPrice = unpayDt.Where(d => d.order_no == x.order_no).Select(o => o.pay).Sum(), //已收金額
|
||
|
||
}),
|
||
count = count,
|
||
};
|
||
|
||
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
||
return Ok(ret);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
}
|
||
|
||
}
|
||
return NotFound();
|
||
}
|
||
|
||
[HttpPost]
|
||
[Route("api/order/GetUnpayDetail")]
|
||
public IHttpActionResult GetUnpayDetail([FromBody] Model.ViewModel.pro_order q, int page, int pageSize = 10,
|
||
string sortBy = "", bool sortDesc = false)
|
||
{
|
||
|
||
//未付款資料
|
||
var unpayDt = _db.pro_order_detail.AsQueryable();
|
||
unpayDt = unpayDt.Where(x => x.keyin1 == (int)Model.pro_order.detailKeyin1.Collection);//只列出報名狀態為"收款中"的項目
|
||
|
||
if (!string.IsNullOrEmpty(q.order_no))
|
||
unpayDt = unpayDt.Where(x => x.order_no == q.order_no);
|
||
|
||
unpayDt = unpayDt.OrderByDescending(x => x.num);
|
||
int i = 1;
|
||
//已有值
|
||
var count = unpayDt.Count();
|
||
var ret = new
|
||
{
|
||
list = unpayDt.ToPagedList(page, pageSize).Select(x => new
|
||
{
|
||
id = i++,
|
||
order_no = x.order_no,
|
||
actItem_num = x.actItem_num,
|
||
actItem_numTxt = x.actItem_num.HasValue ? x.actItem.subject : "",
|
||
f_num = x.f_num,
|
||
u_name = x.f_num.HasValue ? x.follower.u_name : "",
|
||
price = x.price ?? 0 * x.qty ?? 0, //訂單金額
|
||
pay = x.pay ?? 0, //已收金額
|
||
|
||
}),
|
||
count = count,
|
||
};
|
||
|
||
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
||
return Ok(ret);
|
||
|
||
|
||
}
|
||
|
||
|
||
[HttpGet]
|
||
[Route("api/order/printFileLog/{num}/{detail}")]
|
||
public IHttpActionResult printFileLog(int num, int detail)
|
||
{
|
||
string _num = "\"" + num.ToString() + "\"";
|
||
Model.pro_order_detail order = _db.pro_order_detail.Where(q => q.num == detail && !((q.printed_files ?? "").Contains(_num))).FirstOrDefault();//修改
|
||
if (order != null)
|
||
{
|
||
order.printed_files = (order.printed_files ?? "") + _num + ",";
|
||
_db.SaveChanges();
|
||
return Ok(order.printed_files);
|
||
}
|
||
|
||
return NotFound();
|
||
}
|
||
|
||
[HttpPost]
|
||
[Route("api/order/printMultiFileLog")]
|
||
public IHttpActionResult printMultiFileLog([FromBody] List<int> list, int item, int file)
|
||
{
|
||
string _num = "\"" + file.ToString() + "\"";
|
||
|
||
var order = _db.pro_order_detail.Where(q => list.Any(a => a == q.num) && !((q.printed_files ?? "").Contains(_num))).ToList();
|
||
if (order.Count > 0)
|
||
{
|
||
foreach (var row in order)
|
||
row.printed_files = (row.printed_files ?? "") + _num + ",";
|
||
|
||
_db.SaveChanges();
|
||
return Ok();
|
||
}
|
||
|
||
return NotFound();
|
||
}
|
||
|
||
|
||
[HttpGet]
|
||
[Route("api/order/copyDetailData/{num}/{qty}")]
|
||
public IHttpActionResult copyDetailData(int num, int qty)
|
||
{
|
||
if (qty > 0)
|
||
{
|
||
var detail = _db.pro_order_detail.Where(q => q.num == num).FirstOrDefault();
|
||
if (detail != null)
|
||
{
|
||
string jsonStr = JsonConvert.SerializeObject(detail, new JsonSerializerSettings() { StringEscapeHandling = StringEscapeHandling.EscapeNonAscii });
|
||
|
||
for (int i = 0; i < qty; i++)
|
||
{
|
||
Model.pro_order_detail order = new Model.pro_order_detail();//新增
|
||
|
||
//Get properties from EF that are read / write and not marked witht he NotMappedAttribute
|
||
//var sourceProperties = typeof(Model.pro_order_detail)
|
||
// .GetProperties()
|
||
// .Where(p => p.CanRead && p.CanWrite &&
|
||
// p.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.NotMappedAttribute), true).Length == 0);
|
||
|
||
//foreach (var property in sourceProperties)
|
||
//{
|
||
|
||
// Copy value
|
||
// property.SetValue(order, property.GetValue(detail, null), null);
|
||
|
||
//}
|
||
|
||
//order = (Model.pro_order_detail)detail.Clone();
|
||
|
||
order = JsonConvert.DeserializeObject<Model.pro_order_detail>(jsonStr);
|
||
// order = detail; //直接給物件,會傳址,若order.pay = null , 則 detail.pay = null , 且 _db.SaveChanges();只會新增一筆
|
||
order.print_id = "";
|
||
order.pay = null;
|
||
order.keyin1 = (int)Model.pro_order.detailKeyin1.Unconfirmed;
|
||
order.printed_files = null;
|
||
|
||
_db.pro_order_detail.Add(order);
|
||
|
||
}
|
||
_db.SaveChanges();
|
||
return Ok();
|
||
}
|
||
}
|
||
|
||
|
||
return NotFound();
|
||
}
|
||
|
||
|
||
[HttpPost]
|
||
[Route("api/order/GetPastOrderList")]
|
||
public IHttpActionResult GetPastOrderList([FromBody] Model.pro_order q, int page, int pageSize = 10,
|
||
string sortBy = "", bool sortDesc = false)
|
||
{
|
||
int u_name = q.f_num ?? 0;
|
||
if (u_name > 0 && (!string.IsNullOrEmpty(q.order_no)))
|
||
{
|
||
//檢查
|
||
var prod = _db.pro_order.Where(o => o.f_num == u_name && o.order_no != q.order_no).ToList();
|
||
if (prod.Count > 0)
|
||
{
|
||
var orderNumbers = prod.Select(x => x.order_no).ToList();
|
||
var qry = _db.pro_order_detail
|
||
.Where(o => orderNumbers.Contains(o.order_no))
|
||
.Select(x => new
|
||
{
|
||
num = x.num,
|
||
order_no = x.order_no,
|
||
up_time = x.pro_order.up_time,
|
||
activity_selected = new
|
||
{
|
||
text = x.pro_order.activity_num.HasValue ? x.pro_order.activity.subject : "",
|
||
val = x.pro_order.activity_num.HasValue ? x.pro_order.activity_num.Value : 0,
|
||
},
|
||
actitem_num_selected = new
|
||
{
|
||
text = x.actItem_num.HasValue ? x.actItem.subject : "",
|
||
val = x.actItem_num.HasValue ? x.actItem_num.Value : 0,
|
||
}
|
||
})
|
||
.OrderBy(x => x.num); // 加一個預設排序
|
||
|
||
var count = qry.Count();
|
||
IEnumerable<dynamic> resultList;
|
||
|
||
if (pageSize < 0)
|
||
{
|
||
resultList = qry.ToList();
|
||
}
|
||
else
|
||
{
|
||
var pagedList = qry.ToPagedList(page, pageSize);
|
||
resultList = pagedList;
|
||
}
|
||
|
||
var ret = new
|
||
{
|
||
list = resultList.Select((x, index) => new
|
||
{
|
||
id = index + 1,
|
||
num = x.num,
|
||
order_no = x.order_no,
|
||
up_time = x.up_time,
|
||
activity_selected = x.activity_selected,
|
||
actitem_num_selected = x.actitem_num_selected
|
||
}),
|
||
count = count,
|
||
};
|
||
return Ok(ret);
|
||
}
|
||
}
|
||
return Ok("沒有以往報名");
|
||
}
|
||
|
||
[HttpPost]
|
||
[Route("api/order/copyMultiPastItem")]
|
||
public IHttpActionResult copyMultiPastItem([FromBody] List<int> list, string order_no)
|
||
{
|
||
|
||
var detail = _db.pro_order_detail.Where(q => list.Any(a => a == q.num)).OrderByDescending(q => q.order_no).ToList();
|
||
if (detail.Count > 0 && (!string.IsNullOrEmpty(order_no)))
|
||
{
|
||
foreach (var row in detail)
|
||
{
|
||
string jsonStr = JsonConvert.SerializeObject(row, new JsonSerializerSettings() { StringEscapeHandling = StringEscapeHandling.EscapeNonAscii });
|
||
|
||
Model.pro_order_detail order = new Model.pro_order_detail();//新增
|
||
|
||
order = JsonConvert.DeserializeObject<Model.pro_order_detail>(jsonStr);
|
||
order.order_no = order_no;
|
||
order.pay = null;
|
||
order.keyin1 = (int)Model.pro_order.detailKeyin1.Unconfirmed;
|
||
order.printed_files = null;
|
||
|
||
_db.pro_order_detail.Add(order);
|
||
|
||
}
|
||
_db.SaveChanges();
|
||
return Ok();
|
||
}
|
||
|
||
return NotFound();
|
||
}
|
||
|
||
[HttpPost]
|
||
[Route("api/order/GetPayOrderList")]
|
||
public IHttpActionResult GetPayOrderList([FromBody] Model.pro_order_record q, int page, int pageSize = 10,
|
||
string sortBy = "", bool sortDesc = false)
|
||
{
|
||
int detail_num = q.detail_num ?? 0;
|
||
if (detail_num > 0)
|
||
{
|
||
//檢查
|
||
var prod = _db.pro_order_record.Where(o => o.detail_num == detail_num)
|
||
.OrderByDescending(o => o.pay_date).ToList();
|
||
int i = 1;
|
||
|
||
var count = prod.Count();
|
||
var ret = new
|
||
{
|
||
list = prod.ToPagedList(page, pageSize).Select(x => new
|
||
{
|
||
id = i++,
|
||
num = x.num,
|
||
order_no = x.pro_order_detail.order_no,
|
||
pay_date = x.pay_date,
|
||
payment_selected = new
|
||
{
|
||
text = x.payment.HasValue && x.payment.Value > 0 ? x.accounting_kind2.kind : "",
|
||
val = x.payment.HasValue ? x.payment.Value : 0,
|
||
},
|
||
price = x.price ?? 0,
|
||
organization = x.organization,
|
||
bank_code = x.bank_code,
|
||
|
||
}),
|
||
count = count,
|
||
};
|
||
return Ok(ret);
|
||
}
|
||
|
||
|
||
return Ok("沒有資料");
|
||
|
||
}
|
||
|
||
|
||
[HttpDelete]
|
||
[Route("api/order/DeleteRecordDetail/{id}")]//刪除收款註記
|
||
public void DeleteRecordDetail(int id)
|
||
{
|
||
var prod = _db.pro_order_record.Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
||
if (prod != null)
|
||
{
|
||
|
||
_db.pro_order_record.Remove(prod);
|
||
_db.SaveChanges(); //執行
|
||
|
||
}
|
||
}
|
||
|
||
[HttpPost]
|
||
[Route("api/order/SaveRecordDetail")]//取得子項目
|
||
public IHttpActionResult SaveRecordDetail([FromBody] Model.pro_order_record item)
|
||
{
|
||
if (item.detail_num > 0)
|
||
{
|
||
float total = _db.pro_order_detail.Where(x => x.num == item.detail_num).Select(x => x.price.Value * x.qty.Value).Sum();
|
||
float pay = _db.pro_order_record.Where(x => x.detail_num == item.detail_num).Select(x => x.price.Value).Sum();
|
||
|
||
if (pay + item.price.Value <= total)
|
||
{
|
||
//if有資料-修改 , else 新增
|
||
if (item.num > 0)
|
||
{
|
||
_db.Entry(item).State = System.Data.Entity.EntityState.Modified;
|
||
_db.SaveChanges();
|
||
|
||
|
||
//Model.bed_kind_detail _detail = _db.bed_kind_detail.Where(q => q.num == item.num).FirstOrDefault();//修改
|
||
//if (_detail != null)
|
||
//{
|
||
// _detail.bed_name = item.bed_name;
|
||
// if (item.bed_type.HasValue) { _detail.bed_type = item.bed_type.Value; }
|
||
// else { _detail.bed_type = null; }
|
||
// _detail.demo = item.demo;
|
||
|
||
// _db.SaveChanges();
|
||
var ret = item.num;
|
||
return Ok(ret);
|
||
|
||
//}
|
||
//else
|
||
// return NotFound();
|
||
|
||
}
|
||
else
|
||
{
|
||
item.reg_time = DateTime.Now;
|
||
_db.pro_order_record.Add(item);
|
||
_db.SaveChanges();
|
||
|
||
var ret = item.num;
|
||
return Ok(ret);
|
||
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return Ok("已收金額不能超過小計");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return NotFound();
|
||
}
|
||
|
||
}
|
||
|
||
[HttpPost]
|
||
[Route("api/order/GetChildItems")]//取得BOM子項目
|
||
public IHttpActionResult GetChildItems(int item_num,
|
||
string order_no, int order_detail_num)
|
||
{
|
||
var parentItem = _db.act_bom.FirstOrDefault(item => item.item_num == item_num);
|
||
if (parentItem != null)
|
||
{
|
||
var bom = parentItem.act_bom1.ToList();
|
||
|
||
// Create a new list for pro_order_detail items
|
||
List<dynamic> orderDetails = new List<dynamic>();
|
||
|
||
// Iterate over each bom item to create a new pro_order_detail
|
||
int? null_int = null;
|
||
var tempCounter = -1;
|
||
foreach (var x in bom)
|
||
{
|
||
var newOrderDetail = new
|
||
{
|
||
order_no = order_no,
|
||
num = tempCounter--, // 每個項目遞減,確保唯一性, 暫時KEY
|
||
actitem_num_selected = new
|
||
{
|
||
text = x.actItem.subject,
|
||
val = x.item_num,
|
||
},
|
||
f_num_selected = new
|
||
{
|
||
text = "",
|
||
val = null_int,
|
||
},
|
||
actItem_num = x.item_num,
|
||
parent_num = order_detail_num,
|
||
from_id_selected = new
|
||
{
|
||
text = "", //預設帶報名者?
|
||
val = null_int,
|
||
},
|
||
price = 0,//x.price ?? 0,
|
||
qty = 0,//x.qty ?? 0,
|
||
writeBedQty = 0,
|
||
notBedQty = 0,
|
||
category = x.actItem?.category,
|
||
pay = 0,
|
||
pay_date = "",
|
||
keyin1_selected = new
|
||
{
|
||
text = "",//tdesc[1],
|
||
val = null_int,
|
||
},
|
||
demo = "",
|
||
files = new { },// ??,
|
||
customize_data = "",
|
||
customize_data_comb = new
|
||
{
|
||
from_id_cuz_data = "",
|
||
activity_cuz_data = "",
|
||
actitem_cuz_data = x.actItem.customize_data,
|
||
order_cuz_data = "",
|
||
},
|
||
|
||
// Initialize other necessary properties as needed
|
||
};
|
||
|
||
// Add the newly created pro_order_detail to the list
|
||
orderDetails.Add(newOrderDetail);
|
||
}
|
||
|
||
// Return the list of pro_order_detail items
|
||
// Assuming your method returns IHttpActionResult, you can wrap the result with Ok()
|
||
return Ok(orderDetails);
|
||
}
|
||
else
|
||
{
|
||
// Handle the case where there is no parent item found
|
||
return NotFound(); // Or however you wish to handle this scenario
|
||
}
|
||
|
||
//var childItems = _db.act_bom
|
||
// .Where(bom => bom.item_num == item_num && bom.package_num == bom.num).ToList();
|
||
//return Ok(childItems);
|
||
//return NotFound();
|
||
}
|
||
}
|