public PaidServiceDetail GetPaidServiceDetail(int serviceId) { try { using (var ctx = DatabaseContext.Instance.Make()) { var service = ctx.SERVICE.First(s => s.ID == serviceId); if (service == null) { return(null); } var srvDec = LinqToEntity.DecoratePaidService(service); var detail = new PaidServiceDetail { Currency = service.Currency, DayFee = service.FixedPrice, MonthFee = srvDec.FixedPriceMonth, AccountId = service.AccountId }; var signalOwner = LinqToEntity.DecoratePlatformUser(ctx.PLATFORM_USER.First(u => u.ID == service.User)); detail.UserName = signalOwner.MakeNameWithInitials(); if (srvDec.AccountId.HasValue) { var account = LinqToEntity.DecorateAccount(ctx.ACCOUNT.First(a => a.ID == srvDec.AccountId)); detail.AccountGroup = account.Group; } // информация по торговым сигналам var userSignal = ctx.SERVICE.FirstOrDefault(us => us.User == service.User); if (userSignal == null) { return(detail); } detail.SignalTitle = string.IsNullOrEmpty(userSignal.Comment) ? "Сигналы №" + userSignal.ID : userSignal.Comment; var subsCount = ctx.SUBSCRIPTION.Count(us => us.Service == userSignal.ID); detail.SubscribersCount = subsCount; return(detail); } } catch (Exception ex) { Logger.Error("Error in GetPaidServiceDetail()", ex); return(null); } }
private List <PaidService> GetServicesByUserOrId(int id, bool byUser, out PlatformUser serviceOwner) { serviceOwner = null; var srvList = new List <PaidService>(); try { using (var ctx = DatabaseContext.Instance.Make()) { var query = byUser ? ctx.SERVICE.Where(s => s.User == id) : ctx.SERVICE.Where(s => s.ID == id); foreach (var srv in query) { var paidServ = LinqToEntity.DecoratePaidService(srv); var srvId = srv.ID; // добавить рейты foreach (var rate in ctx.SERVICE_RATE.Where(r => r.Service == srvId)) { paidServ.serviceRates.Add(new PaidServiceRate { Amount = rate.Amount, RateType = (PaidServiceRate.ServiceRateType)rate.RateType, UserBalance = rate.UserBalance }); } srvList.Add(paidServ); } if (byUser) { serviceOwner = LinqToEntity.DecoratePlatformUser(ctx.PLATFORM_USER.First(u => u.ID == id)); } else { var srv = srvList.FirstOrDefault(); if (srv != null) { serviceOwner = LinqToEntity.DecoratePlatformUser(ctx.PLATFORM_USER.First(u => u.ID == srv.User)); } } } return(srvList); } catch (Exception ex) { Logger.ErrorFormat("GetServicesByUserOrId({0}, {1}) error: {2}", id, byUser, ex); return(srvList); } }
private PaidService GetPaidServiceProgressiveFeeScaleDetail(TradeSharpConnection ctx, SERVICE srv) { var fees = ctx.SERVICE_RATE.Where(r => r.Service == srv.ID).OrderBy(r => r.UserBalance).ToList(); if (fees.Count == 0) { return(null); } var service = LinqToEntity.DecoratePaidService(srv); service.serviceRates = fees.Select(f => new PaidServiceRate { Amount = f.Amount, RateType = PaidServiceRate.ServiceRateType.Percent, UserBalance = f.UserBalance }).ToList().ToList(); return(service); }