Пример #1
0
        public void TestUsing_NullKeyComparer_Throws()
        {
            Func <int, int>         keySelector = i => i;
            IEqualityComparer <int> keyComparer = null;

            KeyEqualityComparer <int> .Using(keySelector, keyComparer);
        }
Пример #2
0
        public void TestAnd_KeyComparerNull_Throws()
        {
            Func <int, int>         keySelector = i => i;
            IEqualityComparer <int> keyComparer = null;

            KeyEqualityComparer <int> .Using(i => i).And(keySelector, keyComparer);
        }
Пример #3
0
        public void TestAdd_MultipleAnds_FlattensCompoundComparers()
        {
            IEqualityComparer <int> comparer = KeyEqualityComparer <int> .Using(i => i).And(i => i).And(i => i);

            Assert.IsTrue(comparer.Equals(0, 0), "The comparer did see identical values as equal.");
            Assert.IsFalse(comparer.Equals(0, 1), "The compare saw different values as equal.");
        }
Пример #4
0
        public void TestUsing_WithKeyComparer_NullKeySelector_Throws()
        {
            Func <int, int>         keySelector = null;
            IEqualityComparer <int> keyComparer = EqualityComparer <int> .Default;

            KeyEqualityComparer <int> .Using(keySelector, keyComparer);
        }
Пример #5
0
        public void ByTest()
        {
            var actual = new KeyEqualityComparer <String, Int32>(x => x.Length, null);
            var equals = actual.Equals("test", "1234");

            equals.Should()
            .BeTrue();
        }
Пример #6
0
        public void ByTest1()
        {
            var actual = new KeyEqualityComparer <String, String>(x => x, new StringLengthComparer());
            var equals = actual.Equals("test", "1234");

            equals.Should()
            .BeTrue();
        }
Пример #7
0
        /// <inheritdoc cref="HashSet{TElement}.HashSet(int, IEqualityComparer{TElement}?)" />
        public static HashSet <TElement> Create <TElement, TKey>(int capacity, Func <TElement, TKey> keySelector)
        {
            _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector));

            var comparer = new KeyEqualityComparer <TElement, TKey>(keySelector);

            return(new HashSet <TElement>(capacity, comparer));
        }
Пример #8
0
        public void Equals_Nulls()
        {
            var comparer = KeyEqualityComparer.Create((City city) => city.Name);

            EqualityAssert.NotEquals(null, athens, comparer);
            EqualityAssert.Equals(null, null, comparer);
            EqualityAssert.NotEquals(athens, null, comparer);
        }
        /// <inheritdoc cref="ToHashSet{TElement}(IEnumerable{TElement}, IEqualityComparer{TElement})"/>
        public static HashSet <TElement> ToHashSet <TElement, TKey>(this IEnumerable <TElement> source, Func <TElement, TKey> keySelector)
        {
            _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector));

            var comparer = new KeyEqualityComparer <TElement, TKey>(keySelector);

            return(source.ToHashSet(comparer));
        }
Пример #10
0
        /// <inheritdoc cref="HashSet{TElement}.HashSet(IEnumerable{TElement}, IEqualityComparer{TElement}?)" />
        public static HashSet <TElement> Create <TElement, TKey>(IEnumerable <TElement> source, Func <TElement, TKey> keySelector)
        {
            _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector));
            _ = source ?? throw new ArgumentNullException(nameof(source));

            var comparer = new KeyEqualityComparer <TElement, TKey>(keySelector);

            return(new HashSet <TElement>(source, comparer));
        }
        /// <inheritdoc cref="Enumerable.Distinct{TElement}(IEnumerable{TElement})"/>
        public static IEnumerable <TElement> Distinct <TElement, TKey>(this IEnumerable <TElement> source, Func <TElement, TKey> keySelector)
        {
            _ = source ?? throw new ArgumentNullException(nameof(source));
            _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector));

            var keyEqualityComparer = new KeyEqualityComparer <TElement, TKey>(keySelector);

            return(source.Distinct(keyEqualityComparer));
        }
        /// <inheritdoc cref="Enumerable.Contains{TSource}(IEnumerable{TSource}, TSource, IEqualityComparer{TSource}?)"/>
        public static bool Contains <TElement, TKey>(this IEnumerable <TElement> source, TElement item, Func <TElement, TKey> keySelector)
        {
            _ = source ?? throw new ArgumentNullException(nameof(source));
            _ = item ?? throw new ArgumentNullException(nameof(item));
            _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector));

            var equalityComparer = new KeyEqualityComparer <TElement, TKey>(keySelector);

            return(source.Contains(item, equalityComparer));
        }
Пример #13
0
 public new void GetHashCode()
 {
     using (new CultureSwapper(PredefinedCulture.EnglishUnitedStates))
     {
         var comparer   = KeyEqualityComparer.Create((City city) => city.Name, StringComparer.CurrentCultureIgnoreCase);
         var añascoHash = comparer.GetHashCode(añasco);
         Assert.AreEqual(añascoHash, comparer.GetHashCode(añascoUppercase));
         Assert.AreEqual(añascoHash, comparer.GetHashCode(añascoCombining));
     }
 }
Пример #14
0
        public void TestKeyEqualityComparer_CaseInsensitiveSet()
        {
            string[] names = { "Bob", "Tom", "Gary", "Joe", "bOB", "bob", "TOM" };

            KeyEqualityComparer <string> comparer = KeyEqualityComparer <string> .Using(name => name.ToUpperInvariant());

            HashSet <string> nameSet = new HashSet <string>(names, comparer);

            Assert.AreEqual(4, nameSet.Count, "The set did not see some values as duplicates.");
        }
Пример #15
0
        /// <summary>
        /// Determines whether a sequence contains the specified element.
        /// </summary>
        public static bool EqualsAny <TElement, TKey>(this TElement element, IEnumerable <TElement> source, Func <TElement, TKey> keySelector)
        {
            _ = element ?? throw new ArgumentNullException(nameof(element));
            _ = source ?? throw new ArgumentNullException(nameof(source));
            _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector));

            var equalityComparer = new KeyEqualityComparer <TElement, TKey>(keySelector);

            return(source.Any(i => equalityComparer.Equals(i, element)));
        }
        /// <inheritdoc cref="Enumerable.Intersect{TSource}(IEnumerable{TSource}, IEnumerable{TSource}, IEqualityComparer{TSource}?)"/>
        public static IEnumerable <TElement> Intersect <TElement, TKey>(this IEnumerable <TElement> left, IEnumerable <TElement> right, Func <TElement, TKey> keySelector)
        {
            _ = left ?? throw new ArgumentNullException(nameof(left));
            _ = right ?? throw new ArgumentNullException(nameof(right));
            _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector));

            var equalityComparer = new KeyEqualityComparer <TElement, TKey>(keySelector);

            return(left.Intersect(right, equalityComparer));
        }
Пример #17
0
        public void TestGetHashCode_Explicit_GetsKeysHashCode()
        {
            // ignore time when comparing dates
            IEqualityComparer comparer = KeyEqualityComparer <DateTime> .Using(d => d.DayOfYear);

            DateTime dateTime = new DateTime(2011, 1, 11);
            int      actual   = comparer.GetHashCode(dateTime);
            int      expected = dateTime.DayOfYear.GetHashCode();

            Assert.AreEqual(expected, actual, "The key's hash code was not returned.");
        }
Пример #18
0
        public void TestEquals_WithKeyComparer_KeysDoNotMatch_ReturnsFalse()
        {
            // ignore time when comparing dates
            IEqualityComparer <DateTime> comparer = KeyEqualityComparer <DateTime> .Using(d => d.ToString(), StringComparer.OrdinalIgnoreCase);

            DateTime first  = new DateTime(2011, 1, 11);
            DateTime second = new DateTime(2011, 1, 12);
            bool     result = comparer.Equals(first, second);

            Assert.IsFalse(result);
        }
Пример #19
0
        public void TestEquals_KeyDoNotMatch_ReturnsFalse()
        {
            // ignore time when comparing dates
            IEqualityComparer <DateTime> comparer = KeyEqualityComparer <DateTime> .Using(d => d.Date);

            DateTime first  = new DateTime(2011, 1, 11, 4, 53, 0);
            DateTime second = new DateTime(2011, 1, 12, 9, 18, 0);
            bool     result = comparer.Equals(first, second);

            Assert.IsFalse(result);
        }
Пример #20
0
        public void TestEquals_Explicit_KeysMatch_ReturnsTrue()
        {
            // ignore time when comparing dates
            IEqualityComparer comparer = KeyEqualityComparer <DateTime> .Using(d => d);

            DateTime first  = new DateTime(2011, 1, 11);
            DateTime second = new DateTime(2011, 1, 11);
            bool     result = comparer.Equals(first, second);

            Assert.IsTrue(result);
        }
Пример #21
0
        public Axis(MolapHashTypes hashingtype, DataSchema <T> schema)
        {
            _schema       = schema;
            _rowsAxis     = new List <KeyValuePair <T, T>[]>();
            _columnsAxis  = new List <KeyValuePair <T, T>[]>();
            _rowHashes    = new List <T>();
            _columnHashes = new List <T>();
            _hasher       = Hasher <T> .Create(hashingtype);

            _keyComparer         = new KeyComparer <T>();
            _keyEqualityComparer = new KeyEqualityComparer <T>();
        }
        public async Task SynchronizeConfigurationAsync(IConfiguration configuration)
        {
            using (var session = this.documentStore.LightweightSession())
            {
                this.logger.LogInformation("Synchronizing default clients...");
                var clientSecretsComparer = new KeyEqualityComparer <ClientSecret>(secret => secret.Value);
                var clients = Config.GetDefaultClients().Select(x => x.ToEntity());
                foreach (var client in clients)
                {
                    var exisingClients = await session.Query <Client>().Where(document => document.ClientId == client.ClientId).ToListAsync();

                    if (exisingClients.Any())
                    {
                        session.DeleteWhere <Client>(document => document.ClientId == client.ClientId);
                        client.ClientSecrets = exisingClients[0].ClientSecrets.Union(client.ClientSecrets, clientSecretsComparer).ToList();
                    }

                    session.Store(client);
                }

                this.logger.LogInformation("Synchronizing default API resources...");
                var apiResourceSecretsComparer = new KeyEqualityComparer <ApiSecret>(secret => secret.Value);
                var apiResources = Config.GetDefaultApiResources(configuration).Select(x => x.ToEntity());
                foreach (var apiResource in apiResources)
                {
                    var exisingApiResources = await session.Query <ApiResource>().Where(document => document.Name == apiResource.Name).ToListAsync();

                    if (exisingApiResources.Any())
                    {
                        session.DeleteWhere <ApiResource>(document => document.Name == apiResource.Name);
                        apiResource.Secrets = exisingApiResources[0].Secrets.Union(apiResource.Secrets, apiResourceSecretsComparer).ToList();
                    }

                    session.Store(apiResource);
                }

                this.logger.LogInformation("Synchronizing default identity resources...");
                var identityResources = Config.GetDefaultIdentityResources().Select(x => x.ToEntity());
                foreach (var identityResource in identityResources)
                {
                    var exisingApiResources = await session.Query <IdentityResource>().Where(document => document.Name == identityResource.Name).ToListAsync();

                    if (exisingApiResources.Any())
                    {
                        session.DeleteWhere <IdentityResource>(document => document.Name == identityResource.Name);
                    }

                    session.Store(identityResource);
                }

                session.SaveChanges();
            }
        }
Пример #23
0
        public void TestKeyEqualityComparer_FindByDayOfWeek()
        {
            // find the day with the same day of week as today
            IEqualityComparer <DateTime> comparer = KeyEqualityComparer <DateTime> .Using(date => date.DayOfWeek);

            HashSet <DateTime> dates = new HashSet <DateTime>(comparer);
            DateTime           today = new DateTime(2013, 01, 05);

            Assert.IsTrue(dates.Add(today), "The date should have been added.");
            DateTime weekFromToday = today.AddDays(7);

            Assert.IsFalse(dates.Add(weekFromToday), "This day of the week has already been added.");
        }
Пример #24
0
        public void TestKeyEqualityComparer_MultipleKeys()
        {
            IEqualityComparer <Person> comparer = KeyEqualityComparer <Person> .Using(p => p.LastName).And(p => p.FirstName);

            Person joeSmith = new Person()
            {
                FirstName = "Joe",
                LastName  = "Smith",
            };
            Person johnSmith = new Person()
            {
                FirstName = "John",
                LastName  = "Smith",
            };

            Assert.IsTrue(comparer.Equals(johnSmith, johnSmith), "The same object did not equal itself.");
            Assert.IsFalse(comparer.Equals(joeSmith, johnSmith), "The first name was not used in the comparison.");
        }
Пример #25
0
        public void TestAdd_CaseInsensitiveComparer_IgnoresCase()
        {
            IEqualityComparer <Person> comparer = KeyEqualityComparer <Person>
                                                  .Using(p => p.LastName, StringComparer.InvariantCultureIgnoreCase)
                                                  .And(p => p.FirstName, StringComparer.InvariantCultureIgnoreCase);

            Person person1 = new Person()
            {
                FirstName = "Bob", LastName = "Hamburger"
            };
            Person person2 = new Person()
            {
                FirstName = "bob", LastName = "hamburger"
            };

            Assert.AreEqual(comparer.GetHashCode(person1), comparer.GetHashCode(person2), "The hash codes were not the same.");
            Assert.IsTrue(comparer.Equals(person1, person2), "The two objects were not considered equal.");
        }
Пример #26
0
        /// <summary>
        /// 此方法比先Clear(),后AddRange()的好处是,不会造成View的强制刷新。
        /// 视觉效果更加自然。
        /// 但由于要update和notify所有的参数,肯定会造成效率底下。不适合大量数据的更新。
        /// </summary>
        /// <param name="newItems"></param>
        public void ReplaceItems(ICollection <T> newItems)
        {
            //更新已有的,或添加新增的
            foreach (T item in newItems)
            {
                AddOrUpdateItem(item, true);
            }

            KeyEqualityComparer <T> comp = new KeyEqualityComparer <T>();

            //删除newItems里没有的
            foreach (T item in this.ToArray <T>())
            {
                if (!newItems.Contains(item, comp))
                {
                    this.Remove(item);
                }
            }
        }
        public void Add_CustomComparer()
        {
            var uriA      = new Uri("http://test.local/abc");
            var uriB      = new Uri("http://test.local/xyz");
            var resourceA = new byte[] { 43, 59 };
            var resourceB = new byte[] { 217, 24, 64 };

            var uriComparer = KeyEqualityComparer.Create((Uri uri) => uri.Host);
            var xmlResolver = new XmlPreloadedResolver(null, XmlKnownDtds.None, uriComparer);

            xmlResolver.Add(uriA, resourceA);
            xmlResolver.Add(uriB, resourceB, @override: false);

            VerifyResource(resourceA, xmlResolver, uriA);
            VerifyResource(resourceA, xmlResolver, uriB);

            xmlResolver.Add(uriB, resourceB, @override: true);

            VerifyResource(resourceB, xmlResolver, uriA);
            VerifyResource(resourceB, xmlResolver, uriB);
        }
Пример #28
0
        private static ForecastResponse ForecastResponse(ForecastResponse data, OpenWeatherMapResponse response)
        {
            if (response.StatusCode >= 200 && response.StatusCode < 300)
            {
                data.City    = response.OpenWeatherMapForecast.City.Name;
                data.Country = response.OpenWeatherMapForecast.City.Country;

                IEqualityComparer <ForecastResponse.Data> comparer = KeyEqualityComparer <ForecastResponse.Data> .Using(date => date.Date);

                data.Forecasts = response.OpenWeatherMapForecast.Forecasts
                                 .GroupBy(g => new ForecastResponse.Data {
                    Temperature = g.Main.Temp,
                    WindSpeed   = g.Wind.Speed,
                    Humidity    = g.Main.Humidity,
                    Weather     = g.Weather[0].Main,
                    WeatherIcon = g.Weather[0].Icon,
                    Date        = g.Dt.ToLongDateString()
                }, comparer)
                                 .Select(forecast =>
                                         new ForecastResponse.Data {
                    Temperature = forecast.Key.Temperature,
                    WindSpeed   = forecast.Key.WindSpeed,
                    Humidity    = forecast.Key.Humidity,
                    Weather     = forecast.Key.Weather,
                    WeatherIcon = forecast.Key.WeatherIcon,
                    Date        = forecast.Key.Date
                }
                                         )
                                 .ToArray();

                data.StatusCode    = response.OpenWeatherMapForecast.Cod;
                data.StatusMessage = "Success";

                return(data);
            }

            data.StatusMessage = response.Message;
            data.StatusCode    = response.StatusCode;
            return(data);
        }
Пример #29
0
        public void Equals()
        {
            using (new CultureSwapper(PredefinedCulture.EnglishUnitedStates))
            {
                var comparer = KeyEqualityComparer.Create((City city) => city.Name);
                EqualityAssert.Equals(añasco, añasco, comparer);
                EqualityAssert.NotEquals(añasco, añascoUppercase, comparer);
                EqualityAssert.NotEquals(añasco, añascoCombining, comparer,
                                         "Precomposed character should not equal combining character sequence for default equality comparison (ordinal).");

                comparer = KeyEqualityComparer.Create((City city) => city.Name, StringComparer.CurrentCulture);
                EqualityAssert.Equals(añasco, añasco, comparer);
                EqualityAssert.NotEquals(añasco, añascoUppercase, comparer);
                EqualityAssert.Equals(añasco, añascoCombining, comparer,
                                      "Precomposed character should equal combining character sequence for culture-sensitive comparison (en-US).");

                comparer = KeyEqualityComparer.Create((City city) => city.Name, StringComparer.CurrentCultureIgnoreCase);
                EqualityAssert.Equals(añasco, añasco, comparer);
                EqualityAssert.Equals(añasco, añascoUppercase, comparer);
                EqualityAssert.Equals(añasco, añascoCombining, comparer);
            }
        }
Пример #30
0
 /// <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 MasterPhotosDao();
     var localeCom = new LocaleCom();
     var listUpdate = DataHelper.CreateList<PhotoObject>();
     // 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.PhotoCd);
         // Duyệt danh sách locale
         foreach (var other in listLocaleDb) {
             // Gán dữ liệu cập nhật
             other.PhotoCd = info.PhotoCd;
             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<PhotoObject>((k1, k2) =>
         k1.PhotoCd == k2.PhotoCd
         && 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.PhotoCd == info.PhotoCd);
             var idxObj = listUpdate.IndexOf(updateObj);
             // Gán dữ liệu cập nhật
             listUpdate[idxObj].PhotoName = info.PhotoName;
             listUpdate[idxObj].SearchName = info.SearchName;
             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);
     }
     // 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;
 }
Пример #31
0
 /// <summary>
 /// Kiểm tra thông tin.
 /// </summary>
 /// <param name="inputObject">DataModel</param>
 private void Check(SaveDataModel inputObject)
 {
     // Khởi tạo biến cục bộ
     var masterDataCom = new MasterDataCom();
     var localeCom = new LocaleCom();
     var msgs = DataHelper.CreateList<Message>();
     // Lấy ngôn ngữ chuẩn
     var basicLocale = localeCom.GetDefault(DataComLogics.CD_APP_CD_CLN);
     // Lấy đối tượng dữ liệu
     var dataInfo = inputObject.LocaleModel.DataInfo;
     var listLocale = inputObject.LocaleModel.ListLocale;
     // Kiểm tra bắt buộc
     if (DataCheckHelper.IsNull(dataInfo.LocaleCd)) {
         msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "P_CM_00012"));
     }
     if (DataCheckHelper.IsNull(dataInfo.BannerCd)) {
         msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "ADM_MA_BANNERS_00001"));
     }
     //if (DataCheckHelper.IsNull(dataInfo.BannerName)) {
     //    msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "ADM_MA_BANNERS_00002"));
     //}
     // Kiểm tra danh sách lỗi
     if (!DataCheckHelper.IsNull(msgs)) {
         throw new ExecuteException(msgs);
     }
     // Kiểm tra bắt buộc file
     var storageFileCom = new StorageFileCom();
     var listFile = storageFileCom.GetList(dataInfo.LocaleCd, dataInfo.FileCd, false);
     if (listFile.Count == decimal.Zero) {
         msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "ADM_MA_BANNERS_00003"));
     }
     // Kiểm tra danh sách lỗi
     if (!DataCheckHelper.IsNull(msgs)) {
         throw new ExecuteException(msgs);
     }
     // Kiểm tra locale hợp lệ
     if (dataInfo.LocaleCd != basicLocale) {
         msgs.Add(MessageHelper.GetMessage("E_MSG_00030"));
     }
     // Kiểm tra danh sách lỗi
     if (!DataCheckHelper.IsNull(msgs)) {
         throw new ExecuteException(msgs);
     }
     // Kiểm tra dữ liệu tồn tại
     var isExist = masterDataCom.IsExistBanner(
         dataInfo.LocaleCd, dataInfo.BannerCd, true);
     // Kiểm tra dữ liệu tồn tại trường hợp status là add
     if (inputObject.IsAdd && (isExist)) {
         msgs.Add(MessageHelper.GetMessage("E_MSG_00017", "ADM_MA_BANNERS_00005"));
     }
     // Kiểm tra dữ liệu tồn tại trường hợp status là edit
     if (inputObject.IsEdit && (!isExist)) {
         msgs.Add(MessageHelper.GetMessage("E_MSG_00016", "ADM_MA_BANNERS_00005"));
     }
     // Kiểm tra danh sách lỗi
     if (!DataCheckHelper.IsNull(msgs)) {
         throw new ExecuteException(msgs);
     }
     // Khởi tạo biến dùng trong loop
     var i = 1;
     var flagError = false;
     // Duyệt danh sách ngôn ngữ
     foreach (var info in listLocale) {
         // Gán trạng thái lỗi bằng false
         flagError = false;
         // Kiểm tra bắt buộc
         if (DataCheckHelper.IsNull(info.LocaleCd)) {
             flagError = true;
             msgs.Add(MessageHelper.GetMessageForList(
                 "P_CM_00020", i, "E_MSG_00001", "P_CM_00012"));
         }
         //if (DataCheckHelper.IsNull(info.BannerName)) {
         //    flagError = true;
         //    msgs.Add(MessageHelper.GetMessageForList(
         //        "P_CM_00020", i, "E_MSG_00001", "ADM_MA_BANNERS_00002"));
         //}
         // Trường hợp lỗi thì đi đến record tiếp theo
         if (flagError) {
             // Tăng giá trị i
             i++;
             // Đi đến record tiếp theo
             continue;
         }
         // Kiểm tra giá trị duy nhất
         var comparer = new KeyEqualityComparer<BannerObject>((k1, k2) =>
                 k1.RowNo != k2.RowNo
                 && k1.LocaleCd == k2.LocaleCd
         );
         if (dataInfo.LocaleCd == info.LocaleCd || listLocale.Contains(info, comparer)) {
             flagError = true;
             msgs.Add(MessageHelper.GetMessageForList(
                 "P_CM_00020", i, "E_MSG_00017", "P_CM_00012"));
         }
         // Trường hợp lỗi thì đi đến record tiếp theo
         if (flagError) {
             // Tăng giá trị i
             i++;
             // Đi đến record tiếp theo
             continue;
         }
         // Tăng giá trị i
         i++;
     }
     // Kiểm tra danh sách lỗi
     if (!DataCheckHelper.IsNull(msgs)) {
         throw new ExecuteException(msgs);
     }
 }
Пример #32
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 MasterBannersDao();
     // 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.BannerCd);
     // Khởi tạo comparer
     var comparer = new KeyEqualityComparer<BannerObject>((k1, k2) =>
         k1.BannerCd == k2.BannerCd
         && 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.BannerCd = dataInfo.BannerCd;
             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.BannerCd = dataInfo.BannerCd;
             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;
 }
Пример #33
0
        public void GetHashCode(string strTest, int nHashCode)
        {
            var keyComparer = new KeyEqualityComparer <string, int>(str => str.Length);

            Assert.AreEqual(nHashCode, keyComparer.GetHashCode(strTest));
        }
Пример #34
0
 /// <summary>
 /// Kiểm tra thông tin.
 /// </summary>
 /// <param name="inputObject">DataModel</param>
 private void Check(SaveBatchDataModel inputObject)
 {
     // Khởi tạo biến cục bộ
     var masterDataCom = new MasterDataCom();
     var msgs = DataHelper.CreateList<Message>();
     // Kiểm tra bắt buộc
     if (DataCheckHelper.IsNull(inputObject.ListData)) {
         msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "P_CM_00015"));
     }
     // Kiểm tra danh sách lỗi
     if (!DataCheckHelper.IsNull(msgs)) {
         throw new ExecuteException(msgs);
     }
     // Khởi tạo biến dùng trong loop
     var i = 1;
     // Duyệt danh sách dữ liệu
     foreach (var info in inputObject.ListData) {
         // Khởi tạo biến cục bộ
         var flagError = false;
         // Kiểm tra bắt buộc
         if (DataCheckHelper.IsNull(info.LocaleCd)) {
             flagError = true;
             msgs.Add(MessageHelper.GetMessageForList(
                 "P_CM_00015", i, "E_MSG_00001", "P_CM_00012"));
         }
         if (DataCheckHelper.IsNull(info.TypeCd)) {
             flagError = true;
             msgs.Add(MessageHelper.GetMessageForList(
                 "P_CM_00015", i, "E_MSG_00001", "ADM_MA_ROOMTYPES_00001"));
         }
         if (DataCheckHelper.IsNull(info.TypeName)) {
             flagError = true;
             msgs.Add(MessageHelper.GetMessageForList(
                 "P_CM_00015", i, "E_MSG_00001", "ADM_MA_ROOMTYPES_00002"));
         }
         if (DataCheckHelper.IsNull(info.Slug)) {
             flagError = true;
             msgs.Add(MessageHelper.GetMessageForList(
                 "P_CM_00015", i, "E_MSG_00001", "P_CM_00027"));
         }
         // Trường hợp lỗi thì đi đến record tiếp theo
         if (flagError) {
             // Tăng giá trị i
             i++;
             // Đi đến record tiếp theo
             continue;
         }
         // Kiểm tra dữ liệu tồn tại
         var isExist = masterDataCom.IsExistRoomType(
             info.LocaleCd, info.TypeCd, true);
         if (!isExist) {
             flagError = true;
             msgs.Add(MessageHelper.GetMessageForList(
                 "P_CM_00015", i, "E_MSG_00016", "ADM_MA_ROOMTYPES_00006"));
         }
         // Trường hợp lỗi thì đi đến record tiếp theo
         if (flagError) {
             // Tăng giá trị i
             i++;
             // Đi đến record tiếp theo
             continue;
         }
         // Kiểm tra giá trị duy nhất
         var isUnique = masterDataCom.IsUniqueRoomType(info.TypeCd, info.Slug);
         var comparer = new KeyEqualityComparer<RoomTypeObject>((k1, k2) =>
                 k1.TypeCd != k2.TypeCd
                 && k1.Slug == k2.Slug
         );
         if (!isUnique || inputObject.ListData.Contains(info, comparer)) {
             flagError = true;
             msgs.Add(MessageHelper.GetMessageForList(
                 "P_CM_00015", i, "E_MSG_00017", "P_CM_00027"));
         }
         // Trường hợp lỗi thì đi đến record tiếp theo
         if (flagError) {
             // Tăng giá trị i
             i++;
             // Đi đến record tiếp theo
             continue;
         }
         // Tăng giá trị i
         i++;
     }
     // Kiểm tra danh sách lỗi
     if (!DataCheckHelper.IsNull(msgs)) {
         throw new ExecuteException(msgs);
     }
 }