public async Task <GiangVien> UpdateById(string id, GiangVienForUpdateDto giangVien) { var oldRecord = await _context.DanhSachGiangVien.AsNoTracking().FirstOrDefaultAsync(x => x.MaGiangVien == id); var newGiangVien = new GiangVien(); newGiangVien.MaGiangVien = oldRecord.MaGiangVien; newGiangVien.HoVaTen = giangVien.HoVaTen; newGiangVien.GioiTinh = giangVien.GioiTinh; newGiangVien.NgaySinh = giangVien.NgaySinh; newGiangVien.Email = giangVien.Email; newGiangVien.QueQuan = giangVien.QueQuan; newGiangVien.SoDienThoai = giangVien.SoDienThoai; newGiangVien.DiaChi = giangVien.DiaChi; newGiangVien.DonViCongTac = giangVien.DonViCongTac; newGiangVien.HocVi = giangVien.HocVi; newGiangVien.HocHam = giangVien.HocHam; newGiangVien.ThoiGianTao = oldRecord.ThoiGianTao; newGiangVien.ThoiGianCapNhat = DateTime.Now; newGiangVien.TrangThai = giangVien.TrangThai; if (giangVien.MaKhoa.HasValue) { newGiangVien.MaKhoa = giangVien.MaKhoa; } _context.DanhSachGiangVien.Update(newGiangVien); await _context.SaveChangesAsync(); return(newGiangVien); }
public ValidationResultDto ValidateBeforeUpdate(string id, GiangVienForUpdateDto giangVien) { var totalEmail = _context.DanhSachGiangVien.Count(x => x.MaGiangVien != id && x.Email.ToLower() == giangVien.Email.ToLower()); var totalSoDienThoai = _context.DanhSachGiangVien.Count(x => x.MaGiangVien != id && x.SoDienThoai.ToLower() == giangVien.SoDienThoai.ToLower()); IDictionary <string, string[]> Errors = new Dictionary <string, string[]>(); if (totalEmail > 0 || totalSoDienThoai > 0) { if (totalEmail > 0) { Errors.Add("email", new string[] { "email is duplicated!" }); } if (totalSoDienThoai > 0) { Errors.Add("soDienThoai", new string[] { "soDienThoai is duplicated!" }); } return(new ValidationResultDto { IsValid = false, Errors = Errors }); } else { return(new ValidationResultDto { IsValid = true }); } }
public async Task <IActionResult> UpdateById(string id, GiangVienForUpdateDto giangVien) { try { var validationResult = _repo.ValidateBeforeUpdate(id, giangVien); if (validationResult.IsValid) { var result = await _repo.UpdateById(id, giangVien); 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 } })); } }