public async Task <IHttpActionResult> Update(int doGiatID, [FromBody] DoGiat doGiat) { if (doGiat.DoGiatID != doGiatID) { return(BadRequest("Id mismatch")); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var db = new ApplicationDbContext()) { db.Entry(doGiat).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException ducEx) { bool exists = db.DoGiat.Count(o => o.DoGiatID == doGiatID) > 0; if (!exists) { return(NotFound()); } else { throw ducEx; } } return(Ok(doGiat)); } }
public async Task <IHttpActionResult> Update(int chiTietDoGiatID, [FromBody] ChiTietDoGiat chiTietDoGiat) { if (chiTietDoGiat.ChiTietDoGiatID != chiTietDoGiatID) { return(BadRequest("Id mismatch")); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var db = new ApplicationDbContext()) { ChiTietDoGiat chiTietDoGiatCu = await db.ChiTietDoGiat.SingleOrDefaultAsync(x => x.ChiTietDoGiatID == chiTietDoGiatID); try { using (var transaction = db.Database.BeginTransaction()) { KhachDatHang kdh = await db.KhachDatHang.SingleOrDefaultAsync(x => x.KhachDatHangID == chiTietDoGiat.KhachDatHangID); NguoiDung nguoiDung = await db.NguoiDung.SingleOrDefaultAsync(x => x.NguoiDungID == kdh.NguoiDungID); DoGiat doGiat = await db.DoGiat.SingleOrDefaultAsync(x => x.DoGiatID == chiTietDoGiat.DoGiatID); HinhThucGiat hinhThucGiat = await db.HinhThucGiat.SingleOrDefaultAsync(x => x.HinhThucGiatID == chiTietDoGiat.HinhThucGiatID); var giaBan = await db.DonGia.FirstOrDefaultAsync(x => x.DoGiatID == doGiat.DoGiatID && x.HinhThucGiatID == hinhThucGiat.HinhThucGiatID); int?donGia = giaBan.DonGiaGiat; kdh.ThanhTien = (kdh.ThanhTien - donGia * chiTietDoGiatCu.SoLuong + donGia * chiTietDoGiat.SoLuong); nguoiDung.DiemThuong = nguoiDung.DiemThuong - (donGia * chiTietDoGiatCu.SoLuong) / 100 + (donGia * chiTietDoGiat.SoLuong) / 100; chiTietDoGiatCu.KhachDatHangID = chiTietDoGiat.KhachDatHangID; chiTietDoGiatCu.HinhThucGiatID = chiTietDoGiat.HinhThucGiatID; chiTietDoGiatCu.DoGiatID = chiTietDoGiat.DoGiatID; chiTietDoGiatCu.SoLuong = chiTietDoGiat.SoLuong; await db.SaveChangesAsync(); transaction.Commit(); } } catch (DbUpdateConcurrencyException ducEx) { bool exists = db.ChiTietDoGiat.Count(o => o.ChiTietDoGiatID == chiTietDoGiatID) > 0; if (!exists) { return(NotFound()); } else { throw ducEx; } } return(Ok(chiTietDoGiat)); } }
public async Task <IHttpActionResult> Insert([FromBody] DoGiat doGiat) { if (doGiat.DoGiatID != 0) { return(BadRequest("Invalid DoGiatID")); } using (var db = new ApplicationDbContext()) { db.DoGiat.Add(doGiat); await db.SaveChangesAsync(); } return(Ok(doGiat)); }
public async Task <IHttpActionResult> Delete(int chiTietDoGiatID) { using (var db = new ApplicationDbContext()) { using (var transaction = db.Database.BeginTransaction()) { var chiTietDoGiat = await db.ChiTietDoGiat.SingleOrDefaultAsync(o => o.ChiTietDoGiatID == chiTietDoGiatID); if (chiTietDoGiat == null) { return(NotFound()); } KhachDatHang kdh = await db.KhachDatHang.SingleOrDefaultAsync(x => x.KhachDatHangID == chiTietDoGiat.KhachDatHangID); NguoiDung nguoiDung = await db.NguoiDung.SingleOrDefaultAsync(x => x.NguoiDungID == kdh.NguoiDungID); DoGiat doGiat = await db.DoGiat.SingleOrDefaultAsync(x => x.DoGiatID == chiTietDoGiat.DoGiatID); HinhThucGiat hinhThucGiat = await db.HinhThucGiat.SingleOrDefaultAsync(x => x.HinhThucGiatID == chiTietDoGiat.HinhThucGiatID); var giaBan = await db.DonGia.SingleOrDefaultAsync(x => x.DoGiatID == doGiat.DoGiatID && x.HinhThucGiatID == hinhThucGiat.HinhThucGiatID); int?donGia = giaBan.DonGiaGiat; kdh.ThanhTien -= donGia * chiTietDoGiat.SoLuong; nguoiDung.DiemThuong -= (donGia * chiTietDoGiat.SoLuong) / 100; db.Entry(chiTietDoGiat).State = EntityState.Deleted; await db.SaveChangesAsync(); transaction.Commit(); return(Ok()); } } }