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 bed_kindController : ApiController { private Model.ezEntities _db = new Model.ezEntities(); // GET api/ public IEnumerable Get() { var list = _db.bed_kind.ToList(); if (list == null) throw new HttpResponseException(HttpStatusCode.NotFound); return list; } // GET api//5 public Model.bed_kind Get(int id) { var item = _db.bed_kind.Where(q => q.num == id).FirstOrDefault(); 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(int id) { } [HttpGet] [Route("api/bed_kind/count")] public int Count() { var count = _db.bed_kind.Count(); return count; } [HttpPost] [Route("api/bed_kind/GetList")] public IHttpActionResult GetList([FromBody] Model.ViewModel.bed_kind q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { var qry = _db.bed_kind.AsEnumerable(); if (!string.IsNullOrEmpty(q.kind)) qry = qry.Where(o => o.kind.Contains(q.kind)); if (!string.IsNullOrEmpty(q.sex)) qry = qry.Where(o => o.sex == q.sex); if (q.root.HasValue) qry = qry.Where(o => o.root.Value == q.root.Value); qry = qry.OrderBy(o => o.range).ThenBy(o => o.num); var ret = new { list = qry.ToPagedList(page, pageSize).Select(x => new { num = x.num, kind = x.kind, sex = x.sex, }), count = qry.Count() }; return Ok(ret); } [HttpPost] [Route("api/bed_kind/GetDetailList")] public IHttpActionResult GetDetailList([FromBody] Model.ViewModel.bed_kind_detail q, int page, int pageSize = 10, string sortBy = "", bool sortDesc = false) { var tdesc = publicFun.enum_desc(); //var tdesc2 = tdesc.ToArray().Select(x=>x.Value); //[0]單人床,[1]雙人床 //var tdesc3 = tdesc.ToArray().Select(x=>x.Key); //[0]1,[1]2 var qry = _db.bed_kind_detail.AsEnumerable(); if (q.bed_kind_id.HasValue) qry = qry.Where(o => o.bed_kind_id == q.bed_kind_id); if (!string.IsNullOrEmpty(q.bed_name)) qry = qry.Where(o => o.bed_name.Contains(q.bed_name)); if (q.bed_type.HasValue) qry = qry.Where(o => o.bed_type == q.bed_type); if (!string.IsNullOrEmpty(q.bed_type_txt)) { List _bednums = new List(); foreach (var ii in tdesc) if(ii.Value.IndexOf(q.bed_type_txt) > -1) _bednums.Add(ii.Key.ToString()); qry = qry.Where(o => _bednums.Contains( o.bed_type.Value.ToString())); } if (q.inTime.HasValue ) { //判斷日期沒庫存不能選 var bedDt = _db.bed_order_detail.AsEnumerable().Where(f => f.checkIn_date.HasValue && f.checkIn_date ==q.inTime.Value ).Select(f => f.bed_kind_detail_id.ToString());//掛單表單明細 qry = qry.Where(o => !bedDt.ToArray().Contains(o.num.ToString())); } qry = qry.OrderBy(o => o.bed_name); int i = 1; if (pageSize > 0) qry = qry.ToPagedList(page, pageSize); var ret = new { list = qry.Select(x => new { id = i++, num = x.num, bed_name = x.bed_name, bed_type = x.bed_type, bed_type_txt = x.bed_type.HasValue? tdesc[x.bed_type ?? 1] : "", demo = x.demo, }), count = qry.Count() }; return Ok(ret); } [HttpPost] [Route("api/bed_kind/SaveBedKindDetail")] public IHttpActionResult SaveActKindDetail([FromBody] Model.bed_kind_detail item) { if (item.bed_kind_id > 0) { //if有資料-修改 , else 新增 if (item.num > 0) { 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 = _detail.num; return Ok(ret); } else return NotFound(); } else { Model.bed_kind_detail _detail = new Model.bed_kind_detail();//新增 _detail.bed_kind_id = item.bed_kind_id; _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.bed_kind_detail.Add(_detail); _db.SaveChanges(); var ret = _detail.num; return Ok(ret); } } else { return NotFound(); } } [HttpDelete] [Route("api/bed_kind/DeleteBedKindDetail/{id}")]//刪除分類的detail public void DeleteActKindDetail(int id) { var prod = _db.bed_kind_detail.AsEnumerable().Where(q => q.num == id).FirstOrDefault(); //刪除該筆資料 if (prod != null) { //清空掛單資料 //way1 prod.bed_order_detail.Clear(); //way2 //foreach (var item2 in prod.bed_order_detail) // item2.bed_kind_detail_id = null; //way3 //var prod2 = _db.bed_order_detail.AsEnumerable().Where(q => q.bed_kind_detail_id == prod.num).ToList(); //if (prod2.Count > 0) //{ // //清空分類 // foreach (var item2 in prod2) // item2.bed_kind_detail_id = null; //} _db.bed_kind_detail.Remove(prod); _db.SaveChanges(); //執行 } } }