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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }