/// <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 MasterToursDao(); // 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.TourCd); // Khởi tạo comparer var comparer = new KeyEqualityComparer<TourObject>((k1, k2) => k1.TourCd == k2.TourCd && 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); processDao.InsertMeta(dataInfo, transaction); // Duyệt danh sách locale foreach (var info in listLocale) { // Gán dữ liệu cập nhật info.TourCd = dataInfo.TourCd; 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); processDao.InsertMeta(info, transaction); } } else { // Xử lý update đối tượng dữ liệu processDao.Update(dataInfo, transaction); processDao.UpdateMeta(dataInfo, transaction); // Duyệt danh sách locale foreach (var info in listLocale) { // Gán dữ liệu cập nhật info.TourCd = dataInfo.TourCd; 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); processDao.UpdateMeta(info, transaction); } else { // Xử lý insert đối tượng dữ liệu processDao.Insert(info, transaction); processDao.InsertMeta(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; }
/// <summary> /// Lưu thông tin. /// </summary> /// <param name="inputObject">DataModel</param> /// <returns>DataModel</returns> private SaveBatchDataModel SaveInfo(SaveBatchDataModel inputObject) { // Khởi tạo biến cục bộ var saveResult = new SaveBatchDataModel(); var processDao = new MasterToursDao(); var localeCom = new LocaleCom(); var listUpdate = DataHelper.CreateList<TourObject>(); // Map dữ liệu DataHelper.CopyObject(inputObject, saveResult); // Lấy ngôn ngữ chuẩn var basicLocale = localeCom.GetDefault(DataComLogics.CD_APP_CD_CLN); // Lấy danh sách thông tin locale chuẩn var listBasicLocale = inputObject.ListData.Where(o => o.LocaleCd == basicLocale); // Duyệt danh sách thông tin locale chuẩn foreach (var info in listBasicLocale) { // Thêm vào danh sách cập nhật listUpdate.Add(info); // Lấy danh sách locale var listLocaleDb = processDao.GetListOtherLocale(basicLocale, info.TourCd); // Duyệt danh sách locale foreach (var other in listLocaleDb) { // Gán dữ liệu cập nhật other.TourCd = info.TourCd; other.Slug = info.Slug; other.FileCd = info.FileCd; other.SortKey = info.SortKey; other.DeleteFlag = info.DeleteFlag; // Thêm vào danh sách cập nhật listUpdate.Add(other); } } // Lấy danh sách thông tin locale var listOtherLocale = inputObject.ListData.Where(o => o.LocaleCd != basicLocale); // Khởi tạo comparer var comparer = new KeyEqualityComparer<TourObject>((k1, k2) => k1.TourCd == k2.TourCd && k1.LocaleCd == k2.LocaleCd ); // Duyệt danh sách thông tin locale foreach (var info in listOtherLocale) { if (listUpdate.Contains(info, comparer)) { // Lấy thông tin cập nhật var updateObj = listUpdate.Single(o => o.LocaleCd == info.LocaleCd && o.TourCd == info.TourCd); var idxObj = listUpdate.IndexOf(updateObj); // Gán dữ liệu cập nhật listUpdate[idxObj].TourName = info.TourName; listUpdate[idxObj].SearchName = info.SearchName; listUpdate[idxObj].Summary = info.Summary; listUpdate[idxObj].Notes = info.Notes; } else { // Thêm vào danh sách cập nhật listUpdate.Add(info); } } // Xử lý tạo transaction var transaction = processDao.CreateTransaction(); // Duyệt danh sách dữ liệu foreach (var info in listUpdate) { // Xử lý update đối tượng dữ liệu processDao.Update(info, transaction); } // Duyệt danh sách dữ liệu foreach (var info in inputObject.ListData) { // Xử lý update đối tượng meta processDao.UpdateMeta(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; }