using com.itextpdf.text.pdf;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PagedList;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using static TreeView;
///
/// orderdetail 的摘要说明
///
public class orderdetailController:ApiController
{
private Model.ezEntities _db = new Model.ezEntities();
[HttpPost]
[Route("api/orderdetail/GetList")]
public IHttpActionResult GetList([FromBody] Model.ViewModel.pro_order q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
{
int activity_num = Convert.ToInt32(q.activity_num);
//現在的牌位預覽只會出現功德主,修改為所有人都會出現
//var aIDt = _db.actItems.AsEnumerable().Where(f => f.subject.Contains(q.actItemTxt.Trim())).Select(f => f.num);//品項
//var OrderList = _db.pro_order.Where(u => u.activity_num == activity_num).Select(j => j.order_no).ToList();
//var gdzOrderList = _db.pro_order_detail.Where(o => OrderList.Contains(o.order_no) && o.print_id.Contains("主")).Select(o => o.order_no).Distinct().ToList();
//var qry = _db.pro_order.Where(u => gdzOrderList.Contains(u.order_no)).AsEnumerable();
var qry = _db.pro_order.Where( u => u.activity_num == activity_num).OrderByDescending(o => o.reg_time);
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
{
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),
//detail = x.pro_order_detail.Where(u => u.printed_files != null)
detail = new { count = x.pro_order_detail
.Where(u => (u.parent_num != null)
|| u.actItem.subject.Contains("牌")
|| !string.IsNullOrEmpty(u.f_num_tablet))
.Count(),
actItem = x.pro_order_detail.Where(u => u.printed_files != null).Select(u => u.print_id).FirstOrDefault() }
}),
count = count
};
if (ret.list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
return Ok(ret);
}
[HttpPost]
[Route("api/orderdetail/GetDetailToPrint")]
public IHttpActionResult GetDetailToPrint([FromBody] dynamic data)
{
if (data.param is Newtonsoft.Json.Linq.JArray items)
{
string[] details = new string[items.Count];
int i = 0;
foreach (var item in items)
{
details[i] = item["order_no"] + item["num"].ToString();
i++;
}
var parameters = details.Select((s,j)=>"@p"+j).ToArray();
string sql = $"select * from pro_order_detail where order_no+convert(varchar,num) in ({string.Join(",",parameters)}) ";
int l =0;
List sqlList = new List();
foreach (var item in details)
{
sqlList.Add( new SqlParameter("@p" + l, item));
l++;
}
SqlParameter[] p = sqlList.ToArray();
var ret = _db.Database.SqlQuery(sql, p).ToList();
if (ret == null) throw new HttpResponseException(HttpStatusCode.NotFound);
return Ok(ret);
}
else
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
}
}