/// <summary> /// Lưu thông tin. /// </summary> /// <param name="inputObject">DataModel</param> /// <returns>DataModel</returns> private SaveDataModel SaveInfo(SaveDataModel inputObject) { // Khởi tạo biến cục bộ var saveResult = new SaveDataModel(); var processDao = new MasterAccomsDao(); // Map dữ liệu DataHelper.CopyObject(inputObject, saveResult); // Lấy đối tượng dữ liệu var dataInfo = inputObject.LocaleModel.DataInfo; var listLocale = inputObject.LocaleModel.ListLocale; // Lấy danh sách dữ liệu đa ngôn ngữ var listLocaleDb = processDao.GetListLocale(dataInfo.AccomCd); // Khởi tạo comparer var comparer = new KeyEqualityComparer<AccomObject>((k1, k2) => k1.AccomCd == k2.AccomCd && k1.LocaleCd == k2.LocaleCd ); // Xử lý tạo transaction var transaction = processDao.CreateTransaction(); // Lưu đối tượng dữ liệu if (inputObject.IsAdd) { // Xử lý insert đối tượng dữ liệu processDao.Insert(dataInfo, transaction); // Duyệt danh sách locale foreach (var info in listLocale) { // Gán dữ liệu cập nhật info.AccomCd = dataInfo.AccomCd; // info.Slug = dataInfo.Slug; info.FileCd = dataInfo.FileCd; info.SortKey = dataInfo.SortKey; info.DeleteFlag = dataInfo.DeleteFlag; // Xử lý insert đối tượng dữ liệu processDao.Insert(info, transaction); } } else { // Xử lý update đối tượng dữ liệu processDao.Update(dataInfo, transaction); // Duyệt danh sách locale foreach (var info in listLocale) { // Gán dữ liệu cập nhật info.AccomCd = dataInfo.AccomCd; // info.Slug = dataInfo.Slug; info.FileCd = dataInfo.FileCd; info.SortKey = dataInfo.SortKey; info.DeleteFlag = dataInfo.DeleteFlag; // Trường hợp không tồn tại dữ liệu if (listLocaleDb.Contains(info, comparer)) { // Xử lý update đối tượng dữ liệu processDao.Update(info, transaction); } else { // Xử lý insert đối tượng dữ liệu processDao.Insert(info, transaction); } } } // Xử lý lưu các thay đổi từ transaction processDao.CommitTransaction(transaction); // Thêm thông báo thành công saveResult.AddMessage("I_MSG_00004"); // Kết quả trả về return saveResult; }