263 lines
8.4 KiB
C#
263 lines
8.4 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;
|
|
|
|
[ezAuthorize]
|
|
public class bedController : BaseApiController
|
|
{
|
|
// GET api/<controller>
|
|
public IEnumerable<Model.bed_order> Get()
|
|
{
|
|
var list = _db.bed_order.ToList();
|
|
if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return list;
|
|
}
|
|
|
|
// GET api/<controller>/5
|
|
public Model.bed_order Get(string id)
|
|
{
|
|
var item = _db.bed_order.Where(q => q.bed_order_no == id).FirstOrDefault();
|
|
if (item == null) throw new HttpResponseException(HttpStatusCode.NotFound);
|
|
return item;
|
|
}
|
|
|
|
|
|
|
|
// 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(string id)
|
|
{
|
|
var prod = _db.bed_order.AsEnumerable().Where(q => q.bed_order_no == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
//刪除訂單明細
|
|
_db.bed_order_detail.RemoveRange(prod.bed_order_detail);
|
|
//var prod2 = _db.bed_order_detail.AsEnumerable().Where(q => q.bed_order_no == prod.bed_order_no).ToList();
|
|
//if (prod2.Count > 0)
|
|
//{
|
|
// //查詢結果全部刪除
|
|
// _db.bed_order_detail.RemoveRange(prod2);
|
|
// _db.SaveChanges();
|
|
//}
|
|
|
|
_db.bed_order.Remove(prod);
|
|
_db.SaveChanges();//執行
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public static readonly object Locker = new object();
|
|
[HttpPost]
|
|
[Route("api/bed/CreateBedList")]
|
|
public IHttpActionResult CreateBedList([FromBody] Model.pro_order_detail item)
|
|
{
|
|
string order_no = "";
|
|
|
|
if (item.num > 0)
|
|
{
|
|
Model.bed_order chkOrder = _db.bed_order.Where(q => q.order_no == item.order_no && q.o_detail_id == item.num).FirstOrDefault();
|
|
if (chkOrder == null)
|
|
{
|
|
lock (Locker)
|
|
{
|
|
order_no = "ED" + DateTime.Now.ToString("yyMMdd");
|
|
|
|
var qry = _db.companies.AsEnumerable();
|
|
var prod = qry.Where(q => q.num == 1).FirstOrDefault();
|
|
if (prod != null)
|
|
{
|
|
if (!string.IsNullOrEmpty(prod.bed_order_no) && prod.bed_order_no.Contains(order_no))
|
|
{
|
|
int tmp = Convert.ToInt32(prod.bed_order_no.Replace(order_no, "")) + 1;
|
|
order_no = order_no + tmp.ToString("0000");
|
|
}
|
|
else
|
|
order_no = order_no + "0001";
|
|
|
|
prod.bed_order_no = order_no;
|
|
_db.SaveChanges();
|
|
}
|
|
else
|
|
order_no = "";
|
|
}
|
|
|
|
if (order_no != "")
|
|
{
|
|
//建立掛單表單
|
|
Model.bed_order order = new Model.bed_order();//新增
|
|
order.bed_order_no = order_no;
|
|
order.order_no = item.order_no;
|
|
order.o_detail_id = item.num;
|
|
order.keyin1 = "A1"; //預設未入住
|
|
order.reg_time = DateTime.Now;
|
|
_db.bed_order.Add(order);
|
|
|
|
//建立掛單表單明細 count == item.qty
|
|
for (int i = 0; i < item.qty.Value; i++)
|
|
{
|
|
Model.bed_order_detail detail = new Model.bed_order_detail();//新增
|
|
detail.bed_order_no = order_no;
|
|
_db.bed_order_detail.Add(detail);
|
|
}
|
|
|
|
_db.SaveChanges();
|
|
|
|
return Ok();
|
|
}
|
|
else
|
|
return NotFound();
|
|
}
|
|
else
|
|
{
|
|
//check detail qty ?
|
|
int _needQty = chkOrder.pro_order_detail.qty??0;
|
|
int _nowQty = chkOrder.bed_order_detail.Count;
|
|
|
|
for(int i=0; i< _needQty- _nowQty;i++)
|
|
{
|
|
//建立掛單表單明細 count == item.qty
|
|
Model.bed_order_detail detail = new Model.bed_order_detail();//新增
|
|
detail.bed_order_no = chkOrder.bed_order_no;
|
|
_db.bed_order_detail.Add(detail);
|
|
}
|
|
|
|
_db.SaveChanges();
|
|
return Ok(); //已建立
|
|
|
|
}
|
|
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/bed/GetDetailList")]
|
|
public IHttpActionResult GetDetailList([FromBody] Model.bed_order q,
|
|
int page, int pageSize = 10, string sortBy = "", bool sortDesc = false)
|
|
{
|
|
var qry = _db.bed_order_detail.AsEnumerable();
|
|
qry = qry.Where(o => o.bed_order_no == q.bed_order_no);
|
|
|
|
qry = qry.OrderBy(o => o.checkIn_date ).ThenBy(o => o.num);
|
|
|
|
int i = 1;
|
|
var tdesc = publicFun.enum_desc<Model.bed_kind.bed_type>();
|
|
var ret = new
|
|
{
|
|
list = qry.ToPagedList(page, pageSize).Select(x => new
|
|
{
|
|
id = i++,
|
|
num = x.num,
|
|
u_name = x.bed_order.pro_order_detail.f_num.HasValue? (x.bed_order.pro_order_detail.follower.u_name) :"",
|
|
sex = x.bed_order.pro_order_detail.f_num.HasValue? x.bed_order.pro_order_detail.follower.sex :"",
|
|
checkIn_date = x.checkIn_date,
|
|
|
|
//bed_kind1 -> column
|
|
//bed_kind2 -> column
|
|
//bed_kind -> table
|
|
//bed_kind3 -> table
|
|
|
|
bed_kind1_selected = new //樓層
|
|
{
|
|
text = x.bed_kind1.HasValue ? x.bed_kind.kind : "",
|
|
val = x.bed_kind1.HasValue ? x.bed_kind1.Value : 0,
|
|
},
|
|
bed_kind2_selected = new //房號/房名
|
|
{
|
|
text = x.bed_kind2.HasValue ? x.bed_kind3.kind : "",
|
|
val = x.bed_kind2.HasValue ? x.bed_kind2.Value : 0,
|
|
},
|
|
bed_kind_detail_id_selected = new //床位編號
|
|
{
|
|
text = x.bed_kind_detail_id.HasValue ? x.bed_kind_detail.bed_name : "",
|
|
val = x.bed_kind_detail_id.HasValue ? x.bed_kind_detail_id.Value : 0,
|
|
bed_type = x.bed_kind_detail_id.HasValue ? tdesc[x.bed_kind_detail.bed_type ?? 1] : "",
|
|
},
|
|
license = x.license,
|
|
}),
|
|
count = qry.Count()
|
|
|
|
};
|
|
return Ok(ret);
|
|
}
|
|
|
|
|
|
|
|
[HttpPost]
|
|
[Route("api/bed/SaveBedDetail")]
|
|
public IHttpActionResult SaveActKindDetail([FromBody] Model.bed_order_detail item)
|
|
{
|
|
if (item.bed_order_no !="")
|
|
{
|
|
if (item.num > 0)
|
|
{
|
|
Model.bed_order_detail _detail = _db.bed_order_detail.Where(q => q.num == item.num).FirstOrDefault();//修改
|
|
if (_detail != null)
|
|
{
|
|
if(item.checkIn_date.HasValue) _detail.checkIn_date = item.checkIn_date.Value;
|
|
if(item.bed_kind1.HasValue) _detail.bed_kind1 = item.bed_kind1.Value;
|
|
if(item.bed_kind2.HasValue) _detail.bed_kind2 = item.bed_kind2.Value;
|
|
if(item.bed_kind_detail_id.HasValue) _detail.bed_kind_detail_id = item.bed_kind_detail_id.Value;
|
|
_detail.license = item.license;
|
|
|
|
_db.SaveChanges();
|
|
var ret = _detail.num;
|
|
return Ok(ret);
|
|
|
|
}
|
|
else
|
|
return NotFound();
|
|
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
[HttpDelete]
|
|
[Route("api/bed/DeleteBedDetail/{id}")]//刪除detail
|
|
public void DeleteBedDetail(int id)
|
|
{
|
|
var prod = _db.bed_order_detail.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料
|
|
if (prod != null)
|
|
{
|
|
|
|
_db.bed_order_detail.Remove(prod);
|
|
_db.SaveChanges(); //執行
|
|
|
|
}
|
|
}
|
|
}
|