Exemple #1
0
            public static void DeleteByCarId(UnitOfWork unitOfWork, int id)
            {
                using (var items = new XPCollection <DB.Damages>(unitOfWork))
                {
                    var dbItems = items.Where(u => u.Car.Id == id).ToArray();

                    using (var oitems = new XPCollection <DB.OrderDamages>(unitOfWork))
                    {
                        items.DeleteObjectOnRemove = true;
                        for (var i = 0; i < dbItems.Length; i++)
                        {
                            var dbItem = dbItems[i];
                            var od     = oitems.Any(q => q.Damage.Id == dbItem.Id);
                            if (!od)
                            {
                                items.Remove(dbItem);
                            }
                            else
                            {
                                dbItem.Archive = true;
                            }
                        }
                    }
                }
            }
Exemple #2
0
 internal static bool HasAny()
 {
     using (var unitOfWork = new UnitOfWork())
     {
         using (var collection = new XPCollection <DB.OrderServices>(unitOfWork))
         {
             return(collection.Any());
         }
     }
 }
Exemple #3
0
        /// <summary>
        /// Метод сохранения
        /// </summary>
        protected override void OnSaving()
        {
            if (!this.IsDeleted)
            {
                // Если площадка удаляется, то происходит проверка на существование груза на площадке
                // Если площадка удаляется, то происходит  проверка на существование пикетов на площадке

                if (this.Delete_Area.CompareTo(default(DateTime)) != 0)
                {
                    var CargoFilter  = new XPCollection <Cargo>(this.Session, CriteriaOperator.Parse("Number_Area == " + this.Number));
                    var PicketFilter = new XPCollection <Picket>(this.Session, CriteriaOperator.Parse("NumberArea == " + this.Number));

                    if (CargoFilter.Count != 0 && CargoFilter.Any(p => p.Delete_Cargo == DateTime.MinValue))
                    {
                        throw new UserFriendlyException(new Exception(" Error : " + "Груз лежит на площадке"));
                    }


                    if (CargoFilter.Count != 0 && CargoFilter.Any(p => p.Delete_Cargo > this.Delete_Area))
                    {
                        throw new UserFriendlyException(new Exception(" Error : " + "Груз отправляется позже, чем будет закрыта площадка"));
                    }

                    // добавление в историю
                    this.NameDelPicketHistory = string.Join(",", PicketFilter.Select(pt => pt.Name.Trim()));
                    this.NameDelStore         = PicketFilter[0].NumberStore.Name;

                    foreach (var pic in PicketFilter)
                    {
                        pic.NumberArea = null;
                    }

                    return;
                }

                // Проверка наличия пикетов на площадке
                if (this.Pickets.Count == 0)
                {
                    throw new UserFriendlyException(new Exception(" Error : " + "На площадке должен быть минимум 1 пикет"));
                }

                // нельзя разорвать диапазон. проверка
                if (this.Pickets != null)
                {
                    var picCollection = this.Pickets.Select(pic => Convert.ToInt32(pic.Name)).ToList();

                    var query = picCollection.OrderBy(name => name).ToList();

                    for (var p = 0; p < query.Count - 1; p++)
                    {
                        if (query[p + 1] - query[p] != 1)
                        {
                            throw new UserFriendlyException(new Exception(" Error : " + "пикеты должны быть не разрывными"));
                        }
                    }

                    // Пикеты должны принадлежать 1 складу
                    if (this.Pickets.Select(p => p.NumberStore).Distinct().Count() != 1)
                    {
                        throw new UserFriendlyException(new Exception(" Error : " + "Пикет принадлежит площадке на которой лежит груз"));
                    }
                }
            }

            base.OnSaving();
        }