Beispiel #1
0
        protected void cvGridIntersect_ServerValidate(object source, ServerValidateEventArgs args)
        {
            SaveGridDataToObject();
            if (CurrentRange == null)
            {
                return;
            }
            var intervals = CurrentRange.RangeNumbers;

            intervals.OrderBy(x => x.RangelFrom);

            var started = new RangeNumber();

            for (int i = 0; i < intervals.Count; i++)
            {
                if (i == 0)
                {
                    started = intervals[0];
                }
                else
                {
                    if (started.RangelFrom <= intervals[i].RangelFrom && intervals[i].RangelFrom <= started.RangelTo)
                    {
                        args.IsValid = false;
                        return;
                    }
                    started = intervals[i];
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// ѕересекаетс¤ ли указанна¤ запись с другими по диапозону. “олько дл¤ диапазонов с парент ид = null,
        ///   т.е. это проверка пересечений главных диапазонов из шапки страницы
        /// </summary>
        /// <param name="range">
        /// The range.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool IntersectWithOther(RangeNumber range)
        {
            var intervals = GetBy(x => x.Smo == range.Smo && x.Id != range.Id && x.Parent == null);

            intervals.Add(range);
            intervals.OrderBy(x => x.RangelFrom);

            var started = new RangeNumber();

            for (var i = 0; i < intervals.Count; i++)
            {
                if (i == 0)
                {
                    started = intervals[0];
                }
                else
                {
                    if (started.RangelFrom <= intervals[i].RangelFrom && intervals[i].RangelFrom <= started.RangelTo)
                    {
                        return(true);
                    }

                    started = intervals[i];
                }
            }

            return(false);
        }
Beispiel #3
0
        /// <summary>
        /// ƒобавление или обновление записи
        /// </summary>
        /// <param name="range">
        /// The range.
        /// </param>
        public void AddOrUpdateRangeNumber(RangeNumber range)
        {
            // синхронизируем список поддиапазонов того что в базе и того что в объекте
            // удал¤ем из базы те элементы дл¤ которых нету записей в range.RangeNumbers
            var rangeInDatabase = GetById(range.Id);
            var listToDelete    =
                rangeInDatabase.RangeNumbers.Where(x => !range.RangeNumbers.Select(y => y.Id).ToList().Contains(x.Id)).ToList();

            ObjectFactory.GetInstance <ISessionFactory>().GetCurrentSession().Evict(rangeInDatabase);

            foreach (var item in listToDelete)
            {
                Delete(item);
            }

            // сохран¤ем список из объекта
            foreach (var item in range.RangeNumbers)
            {
                // если объекта нету в базе обнул¤ем ид - значит это новый
                var subrangeInDatabase = GetById(item.Id);
                if (subrangeInDatabase == null)
                {
                    item.Id = Guid.Empty;
                }

                ObjectFactory.GetInstance <ISessionFactory>().GetCurrentSession().Evict(subrangeInDatabase);
                SaveOrUpdate(item);
            }

            SaveOrUpdate(range);
        }
Beispiel #4
0
 /// <summary>
 /// Добавление или обновление записи
 /// </summary>
 /// <param name="range">
 /// The range.
 /// </param>
 public void SaveRangeNumber(RangeNumber range)
 {
     InvokeInterceptors(() => Service.SaveRangeNumber(range));
 }
Beispiel #5
0
 /// <summary>
 /// Пересекается ли указанная запись с другими по диапозону. Только для диапазонов с парент ид = null,
 ///   т.е. это проверка пересечений главных диапазонов из шапки страницы
 /// </summary>
 /// <param name="range">
 /// The range.
 /// </param>
 /// <returns>
 /// The <see cref="bool"/>.
 /// </returns>
 public bool IntersectWithOther(RangeNumber range)
 {
     return(InvokeInterceptors(() => Service.IntersectWithOther(range)));
 }
Beispiel #6
0
        /// <summary>
        ///   The sinhronize smo.
        /// </summary>
        private void SinhronizeSmo()
        {
            using (
                var sessionSrz =
                    ObjectFactory.GetInstance <IManagerSessionFactorys>().GetFactoryByName("NHibernateCfgAtl.xml").OpenSession())
            {
                var sessionPvp = ObjectFactory.GetInstance <ISessionFactory>().GetCurrentSession();
                var smoSrzList = sessionSrz.QueryOver <Smo>().List();
                var smoPvpList = sessionPvp.QueryOver <Organisation>().Where(x => x.Oid.Id == Oid.Smo).List();
                var list       = smoPvpList;

                // Перенос СМО из базы srz в базу pvp
                var smoToPvpList = smoSrzList.Where(x => list.All(y => y.Code != x.Code)).ToList();
                var oid          = ObjectFactory.GetInstance <IOidManager>().GetById(Oid.Smo);
                foreach (var smo in smoToPvpList)
                {
                    var bossfio = string.IsNullOrEmpty(smo.Bossname)
                          ? new[] { string.Empty, string.Empty, string.Empty }
                          : smo.Bossname.Split(' ');

                    var tfomsCode = smo.Code.Length >= 2 ? smo.Code.Substring(0, 2) : string.Empty;
                    var smoPvp    = new Organisation
                    {
                        Parent =
                            ObjectFactory.GetInstance <IOrganisationManager>()
                            .GetBy(x => x.Code == tfomsCode && x.Oid.Id == Oid.Tfoms)
                            .FirstOrDefault(),
                        Code                = smo.Code,
                        ShortName           = smo.Caption,
                        FullName            = smo.Fullname,
                        Ogrn                = smo.Ogrn,
                        Phone               = smo.Tel1,
                        DateLastEdit        = smo.Dedit,
                        FirstName           = bossfio.Length >= 1 ? bossfio[0] : string.Empty,
                        LastName            = bossfio.Length >= 2 ? bossfio[1] : string.Empty,
                        MiddleName          = bossfio.Length >= 3 ? bossfio[2] : string.Empty,
                        DateIncludeRegister = smo.Db,
                        DateExcludeRegister = smo.De,
                        Oid = oid
                    };

                    sessionPvp.Save(smoPvp);
                    smoPvpList.Add(smoPvp);
                }

                sessionPvp.Flush();

                // Перенос диапазонов номеров бланков ВС из базы СРЗ в базу ПВП
                var rangeNumbersSrzList = sessionSrz.QueryOver <Vsdiap>().List();
                var addedPvpRangeNumber = new List <RangeNumber>();
                foreach (var rangeNumberSrz in rangeNumbersSrzList)
                {
                    Organisation smo            = null;
                    var          rangeNumberPvp =
                        sessionPvp.QueryOver <RangeNumber>()
                        .JoinAlias(x => x.Smo, () => smo)
                        .Where(
                            x =>
                            x.RangelFrom == rangeNumberSrz.Lo && x.RangelTo == rangeNumberSrz.Hi &&
                            smo.Code == rangeNumberSrz.SMO.Code)
                        .List()
                        .FirstOrDefault();

                    // создаем новую запись
                    if (rangeNumberPvp == null)
                    {
                        rangeNumberPvp     = new RangeNumber();
                        rangeNumberPvp.Smo =
                            sessionPvp.QueryOver <Organisation>().Where(x => x.Code == rangeNumberSrz.SMO.Code).List().FirstOrDefault();
                        rangeNumberPvp.RangelFrom = rangeNumberSrz.Lo.HasValue ? rangeNumberSrz.Lo.Value : 0;
                        rangeNumberPvp.RangelTo   = rangeNumberSrz.Hi.HasValue ? rangeNumberSrz.Hi.Value : 0;
                        addedPvpRangeNumber.Add(rangeNumberPvp);
                        sessionPvp.Save(rangeNumberPvp);
                    }
                }

                sessionPvp.Flush();

                // Перенос СМО из базы ПВП в базу СРЗ
                var smoToSrzList = smoPvpList.Where(x => smoSrzList.All(y => y.Code != x.Code)).ToList();
                foreach (var smo in smoToSrzList)
                {
                    var smoSrz = new Smo
                    {
                        Code     = smo.Code,
                        Caption  = smo.ShortName,
                        Fullname = smo.FullName,
                        Ogrn     = smo.Ogrn,
                        Db       = smo.DateIncludeRegister,
                        De       = smo.DateExcludeRegister,
                        Bossname = string.Format("{0} {1} {2}", smo.FirstName, smo.LastName, smo.MiddleName),
                        Tel1     = smo.Phone,
                    };

                    sessionSrz.Save(smoSrz);
                }

                sessionSrz.Flush();

                // Перенос диапазонов номеров бланков ВС из базы ПВП в базу СРЗ
                var rangeNumbersPvpList = sessionPvp.QueryOver <RangeNumber>().List();
                rangeNumbersPvpList = rangeNumbersPvpList.Where(x => addedPvpRangeNumber.All(y => x.Id != y.Id)).ToList();
                foreach (var rangeNumberPvp in rangeNumbersPvpList)
                {
                    Smo smo       = null;
                    var vsdiapSrz =
                        sessionSrz.QueryOver <Vsdiap>()
                        .JoinAlias(x => x.SMO, () => smo)
                        .Where(
                            x =>
                            x.Lo == rangeNumberPvp.RangelFrom && x.Hi == rangeNumberPvp.RangelTo &&
                            smo.Code == rangeNumberPvp.Smo.Code)
                        .List()
                        .FirstOrDefault();

                    // создаем новую запись
                    if (vsdiapSrz == null)
                    {
                        vsdiapSrz       = new Vsdiap();
                        vsdiapSrz.Dedit = DateTime.Now;
                        vsdiapSrz.SMO   =
                            sessionSrz.QueryOver <Smo>().Where(x => x.Code == rangeNumberPvp.Smo.Code).List().FirstOrDefault();
                        vsdiapSrz.Lo = rangeNumberPvp.RangelFrom;
                        vsdiapSrz.Hi = rangeNumberPvp.RangelTo;
                        sessionSrz.Save(vsdiapSrz);
                    }
                }

                sessionSrz.Flush();

                // закрываем сессию СРЗ
                sessionSrz.Close();
            }
        }
Beispiel #7
0
 /// <summary>
 /// Добавление или обновление записи
 /// </summary>
 /// <param name="range">
 /// The range.
 /// </param>
 public void SaveRangeNumber(RangeNumber range)
 {
     ObjectFactory.GetInstance <IRangeNumberManager>().AddOrUpdateRangeNumber(range);
 }
Beispiel #8
0
 /// <summary>
 /// Пересекается ли указанная запись с другими по диапозону. Только для диапазонов с парент ид = null,
 ///   т.е. это проверка пересечений главных диапазонов из шапки страницы
 /// </summary>
 /// <param name="range">
 /// The range.
 /// </param>
 /// <returns>
 /// The <see cref="bool"/>.
 /// </returns>
 public bool IntersectWithOther(RangeNumber range)
 {
     return(ObjectFactory.GetInstance <IRangeNumberManager>().IntersectWithOther(range));
 }