Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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());
                }
            }
        }