public async Task <ChiTietPhieuDatSan> UpdateById(int id, ChiTietPhieuDatSanForUpdateDto chiTietPhieuDatSan) { var phieuDatSan = await _context.DanhSachPhieuDatSan.FirstOrDefaultAsync(x => x.MaPhieuDatSan == chiTietPhieuDatSan.MaPhieuDatSan); double daThanhToan = 0; var danhSachChiTietPhieuDatSan = _context.DanhSachChiTietPhieuDatSan .Where(x => x.MaPhieuDatSan == phieuDatSan.MaPhieuDatSan && x.MaChiTietPDS != id); foreach (var item in danhSachChiTietPhieuDatSan) { daThanhToan = daThanhToan + item.TienCoc; } daThanhToan = daThanhToan + chiTietPhieuDatSan.TienCoc; if (daThanhToan == 0) { phieuDatSan.TrangThai = 0; } else if (daThanhToan < phieuDatSan.TongTien) { phieuDatSan.TrangThai = 1; } else if (daThanhToan >= phieuDatSan.TongTien) { phieuDatSan.TrangThai = 2; } _context.DanhSachPhieuDatSan.Update(phieuDatSan); await _context.SaveChangesAsync(); var oldRecord = await _context.DanhSachChiTietPhieuDatSan.AsNoTracking().FirstOrDefaultAsync(x => x.MaChiTietPDS == id); var chiTietPhieuDatSanToUpdateById = new ChiTietPhieuDatSan { MaChiTietPDS = id, MaPhieuDatSan = chiTietPhieuDatSan.MaPhieuDatSan, MaSanBong = chiTietPhieuDatSan.MaSanBong, ThoiGianBatDau = chiTietPhieuDatSan.ThoiGianBatDau, ThoiGianKetThuc = chiTietPhieuDatSan.ThoiGianKetThuc, NgayDat = chiTietPhieuDatSan.NgayDat, TienCoc = chiTietPhieuDatSan.TienCoc, ThanhTien = chiTietPhieuDatSan.ThanhTien, ThoiGianTao = DateTime.Now, ThoiGianCapNhat = DateTime.Now }; _context.DanhSachChiTietPhieuDatSan.Update(chiTietPhieuDatSanToUpdateById); await _context.SaveChangesAsync(); return(chiTietPhieuDatSanToUpdateById); }
public async Task <IActionResult> UpdateById(int id, ChiTietPhieuDatSanForUpdateDto chiTietPhieuDatSan) { try { var validationResult = _repo.ValidateBeforeUpdate(id, chiTietPhieuDatSan); if (validationResult.IsValid) { var result = await _repo.UpdateById(id, chiTietPhieuDatSan); return(StatusCode(200, new SuccessResponseDto { Message = "Cập nhật " + _entityName + " thành công!", Result = new SuccessResponseResultWithSingleDataDto { Data = result } })); } else { return(StatusCode(500, new FailedResponseDto { Message = "Cập nhật " + _entityName + " mới thất bại!", Result = new FailedResponseResultDto { Errors = validationResult.Errors } })); } } catch (Exception e) { return(StatusCode(500, new FailedResponseDto { Message = "Cập nhật " + _entityName + " thất bại!", Result = new FailedResponseResultDto { Errors = e } })); } }
public ValidationResultDto ValidateBeforeUpdate(int id, ChiTietPhieuDatSanForUpdateDto chiTietPhieuDatSan) { var total = _context.DanhSachChiTietPhieuDatSan.Count(x => x.MaChiTietPDS != id && x.MaSanBong == chiTietPhieuDatSan.MaSanBong && x.ThoiGianBatDau <= chiTietPhieuDatSan.ThoiGianBatDau && x.ThoiGianKetThuc >= chiTietPhieuDatSan.ThoiGianBatDau); IDictionary <string, string[]> Errors = new Dictionary <string, string[]>(); if (total > 0) { Errors.Add("maSanBong and thoiGianBatDau", new string[] { "email is duplicated!" }); return(new ValidationResultDto { IsValid = false, Errors = Errors }); } else { return(new ValidationResultDto { IsValid = true }); } }