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/ public IEnumerable Get() { var list = _db.bed_order.ToList(); if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound); return list; } // GET api//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/ public void Post([FromBody] string value) { } // PUT api//5 public void Put(int id, [FromBody] string value) { } // DELETE api//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(); 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(); //執行 } } }