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; } } } } }
internal static bool HasAny() { using (var unitOfWork = new UnitOfWork()) { using (var collection = new XPCollection <DB.OrderServices>(unitOfWork)) { return(collection.Any()); } } }
/// <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(); }