Beispiel #1
0
 /// <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;
 }