FantomModel[] IFantomService.GetFantoms(ApplicationVersion applicationVersion, FantomFilterModel filter) { return(RunSecurity(applicationVersion, (user) => { CheckRightsFantom(user); return _RepositoryFantom.GetFantoms(filter); })); }
public FantomModel[] GetFantoms(FantomFilterModel filter) { if (FantomFilterModel.IsNull(filter)) { throw new ArgumentNullException("Значение фильтра не было получено"); } if (filter.PeriodFromDate.HasValue) { CheckDate(filter.PeriodFromDate.Value); } if (filter.PeriodToDate.HasValue) { CheckDate(filter.PeriodToDate.Value); } filter.SupplierName = filter.SupplierName.ToStringTrim(); FantomModel[] rezult = null; Util.DoAction <T>(p => { IQueryable <Pay> queryPay = p.Pays; IQueryable <Supplier> querySupplier = p.Suppliers; if (filter.PeriodFromDate.HasValue) { var date = filter.PeriodFromDate.Value.Date.AddMilliseconds(-1); queryPay = queryPay.Where(z => z.PeriodDate > date); } if (filter.PeriodToDate.HasValue) { var date = filter.PeriodToDate.Value.Date.AddDays(1); queryPay = queryPay.Where(z => z.PeriodDate < date); } if (filter.TypeAcc.HasValue) { var type = (int)filter.TypeAcc.Value; queryPay = queryPay.Where(z => z.Action == type); } if (filter.TypeCurrency.HasValue) { var type = (int)filter.TypeCurrency.Value; queryPay = queryPay.Where(z => z.Currency == type); } if (!String.IsNullOrWhiteSpace(filter.SupplierName)) { querySupplier = querySupplier.Where(z => z.Name.Contains(filter.SupplierName)); } rezult = (from fan in queryPay join s in querySupplier on fan.Supplier equals s.UID select new FantomModel { UID = fan.UID, Comment = fan.Commеnt, EventDate = fan.EventDate, Sum = fan.Sum, PeriodDate = fan.PeriodDate, SupplierName = s.Name, Currency = (TypeCurrencyEnum)(int)fan.Currency, TypeAccount = (TypeAccEnum)(int)fan.Action }) .ToArray(); }); return(rezult); }