/// <summary> /// Tìm kiếm thiết bị với 3 yếu tố /// </summary> /// <param name="ph"></param> /// <param name="tb"></param> /// <param name="tr"></param> /// <returns></returns> public static CTThietBi search(Phong ph, ThietBi tb, TinhTrang tr) { try { IQueryable <CTThietBi> query = db.CTTHIETBIS.AsQueryable(); if (ph == null) { query = query.Where(c => c.phong_id == null); } else { query = query.Where(c => c.phong_id == ph.id); } query = query.Where(c => c.thietbi_id == tb.id && c.tinhtrang_id == tr.id); return(query.FirstOrDefault()); } catch (Exception e) { Debug.WriteLine(e); return(null); } }
/// <summary> /// Di chuyển, kết hợp đổi tình trạng, /// có hỗ trợ ghi LOG tự động,vd: /// CTThietBi obj = CTThietBi.getById(24552); /// Phong dich = null;// Phong.getById(1228); /// TinhTrang ttr = TinhTrang.getById(3); /// int re = obj.dichuyen(dich, ttr, -1, "đổi tình trạng toàn bộ luôn"); /// </summary> /// <param name="dich">Phòng cần di chuyển đến (null nếu chỉ muốn đổi tình trạng)</param> /// <param name="ttmoi">Tình trạng cần chuyển sang (null nếu chỉ muốn đổi phòng)</param> /// <param name="soluong">Số lượng cần chuyển (mac dinh la -1 (chuyển tất cả))</param> /// /// <param name="mota">Mô tả cho quá trình di chuyển</param> /// <param name="hinhs">Hình mô tả cho quá trình di chuyển (Hình sạch)</param> /// <returns></returns> public int dichuyen(Phong dich = null, TinhTrang ttmoi = null, int soluong = -1, String mota = "", List <HinhAnh> hinhs = null, DateTime?ngay = null) { try { //pre set data dich = dich == null ? this.phong : dich; //=> dich co the van se la null (do this.phong có thể là null) ttmoi = ttmoi == null ? this.tinhtrang : ttmoi;//tinh trang không thể null ngay = ngay == null?ServerTimeHelper.getNow() : ngay; //XÉT ĐIỀU KIỆN if ( //Nếu Không có bất kỳ sự thay đổi nào, phòng và tình trạng giống với this ((dich == null && this.phong == null) || (dich != null && dich.id == this.phong.id)) && ttmoi.id == this.tinhtrang.id ) { return(-2); } //kiem tra rang buoc không cho thực thi if ( soluong == 0 || soluong > this.soluong ) { return(-2); } soluong = soluong < 0 ? this.soluong : soluong; //tao hoac cap nhat mot CTTB moi cho PHONG moi (dich) //kiem tra co record nao trung với record cần tạo mới (dich, tinhtrang, thietbi) ? CTThietBi tmp = search(dich, this.thietbi, ttmoi); //NO //TAO MOI CTTB => add if (tmp == null) { tmp = new CTThietBi(); tmp.phong = dich; tmp.soluong = soluong; tmp.thietbi = this.thietbi; tmp.tinhtrang = ttmoi; tmp.mota = mota; tmp.hinhanhs = hinhs; tmp.ngay = ngay; tmp.add(); } else { //Đã có CTTB sẵn giống với CTTB cần tạo mới //SELECT CTTB do len => update if (tmp.id != this.id) { tmp.soluong += soluong; tmp.mota = mota; tmp.hinhanhs = hinhs; tmp.ngay = ngay; tmp.update(); } } //cap nhat lai so luong cho cái hiện đã bị chuyển this.mota = mota; this.soluong -= soluong; this.soluong = this.soluong < 0 ? 0 : this.soluong;//for sure this.hinhanhs = hinhs; //ghi log thietbi ngay sau khi cap nhat ONLY soluong this.update(); return(1); } catch (Exception e) { Debug.WriteLine(e); return(-1); } }