public IHttpActionResult Get([FromUri] ProfileCreditRequest request) { return(Execute <IHttpActionResult>(delegate { bool isPoweUser = SessionGlobal.CurrentUser.RoleNames.Any(a => a == Constants.OWNER || a == Constants.TELLER || Constants.ALL_MARKETING_AsArray.Any(b => a == b)); Expression <Func <IProfileCredit, bool> > filter = x => true; if (!isPoweUser) { if (isPoweUser || request.UserId.Value == SessionGlobal.CurrentUser.Identity.UserId) { int userId = request.UserId.Value; filter = x => x.UserId == userId; } else { throw new UnauthorizedAccessException("Attempt to request records from other profile"); } } LocationDiscriminator locationFilter = null; if (!string.IsNullOrEmpty(request.LocationLambda)) { locationFilter = new LocationDiscriminator() { Filter = ExpressionParser.CompileBolleanFunc <ILocation>(request.LocationLambda) }; } ProductDiscriminator productFilter = null; if (!string.IsNullOrEmpty(request.ProductLambda)) { productFilter = new ProductDiscriminator() { Filter = ExpressionParser.CompileBolleanFunc <IProduct>(request.ProductLambda) }; } return base.Ok(Db.FindProfileCredit2( productFilter, new ProfileCreditDiscriminator() { Filter = filter }, locationFilter ) ); })); }
public OwnerContract[] FindOwner(OwnerDiscriminator d, LocationDiscriminator l) { try { using (var records = RepositoryFactory.GetOwner()) { records.Discriminator = d; records.LocationFilter = l; return(records.Select(r => new OwnerContract() { Owner = r }).ToArray()); } } catch (Exception ex) { HandleMyException(ex); return(null); } }
public LocationContract[] FindLocation(LocationDiscriminator d, OwnerVsLocationDiscriminator o, UserProfileDiscriminator u) { try { using (var records = RepositoryFactory.GetLocation()) { records.Discriminator = d; records.OwnerVsLocationFilter = o; records.UserProfileFilter = u; return(records.Select(r => new LocationContract() { Location = r }).ToArray()); } } catch (Exception ex) { HandleMyException(ex); return(null); } }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <param name="l"></param> /// <param name="c"></param> /// <param name="userId">User id that will be used to remove products known for the user</param> /// <returns></returns> public ProductContract[] FindProduct(ProductDiscriminator d, LocationDiscriminator l, ProfileCreditDiscriminator c, int userId) { try { using (var records = RepositoryFactory.GetProduct()) { records.Discriminator = d; records.LocationFilter = l; records.ProfileCreditFilter = c; records.UserIdForExcludingAlreadyUsedProducts = userId; return(records.Select(r => new ProductContract() { Product = r }).ToArray()); } } catch (Exception ex) { HandleMyException(ex); return(null); } }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <param name="l"></param> /// <param name="c"></param> /// <param name="trnCntByProduct">Max count of transactions to select by each product</param> /// <returns></returns> public ProductAndTransactionsContract[] FindProductLastTransactions(ProductDiscriminator d, LocationDiscriminator l, ProfileCreditDiscriminator c, int trnCntByProduct) { try { using (var records = RepositoryFactory.GetProduct()) { records.Discriminator = d; records.LocationFilter = l; records.ProfileCreditFilter = c; return(records.Select(r => new ProductAndTransactionsContract() { Product = r, CreditTransactions = (r as DB.Product).CreditTransactions.OrderByDescending(x => x.TransactionTime).Take(trnCntByProduct) }).ToArray()); } } catch (Exception ex) { HandleMyException(ex); return(null); } }
public ProductCreditContract[] FindProfileCredit2(ProductDiscriminator p, ProfileCreditDiscriminator d, LocationDiscriminator l) { try { using (var records = RepositoryFactory.GetProfileCredit()) { records.Discriminator = d; records.ProductFilter = p; records.LocationFilter = l; return(records.Select(r => new ProductCreditContract() { ProfileCredit = r, Product = (r as DB.ProfileCredit).Product }).ToArray()); } } catch (Exception ex) { HandleMyException(ex); return(null); } }
public OwnerVsLocationContract[] FindOwnerVsLocation(OwnerVsLocationDiscriminator o, LocationDiscriminator l, UserProfileDiscriminator p) { try { using (var records = RepositoryFactory.GetOwnerVsLocation()) { records.Discriminator = o; records.LocationFilter = l; return(records.Select(r => new OwnerVsLocationContract() { OwnerVsLocation = r }).ToArray()); } } catch (Exception ex) { HandleMyException(ex); return(null); } }