public ActionResult DeleteConfirmed(int id)
        {
            SUBSCRIPTION sUBSCRIPTION = db.SUBSCRIPTION.Find(id);

            db.SUBSCRIPTION.Remove(sUBSCRIPTION);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 2
0
        /// <summary>
        /// отключить подписчика
        /// заодно отрубить ему торговые сигналы
        /// </summary>
        public bool UnsubscribeSubscriber(TradeSharpConnection ctx, SUBSCRIPTION sub)
        {
            // отписать подписчика и сформировать для него уведомление
            try
            {
                var service = ctx.SERVICE.First(s => s.ID == sub.Service);
                Logger.InfoFormat("UnsubscribeSubscriber(srv={0}, user={1}, srvAccount={2})",
                                  sub.Service, sub.User, service.AccountId);

                // отписать от торг. сигналов?
                if (service.ServiceType == (int)PaidServiceType.Signals)
                {
                    var signalService = (from srv in ctx.SERVICE
                                         where srv.ID == sub.Service
                                         select srv).FirstOrDefault();

                    if (signalService != null)
                    {
                        var signalId = signalService.ID;
                        var query    = (from us in ctx.SUBSCRIPTION
                                        where us.Service == signalId &&
                                        us.User == sub.User
                                        select us);

                        var userSignalToRemove = new List <SUBSCRIPTION>();
                        foreach (var userSubscribed in query)
                        {
                            userSignalToRemove.Add(userSubscribed);
                        }
                        Logger.InfoFormat("UnsubscribeSubscriber(): remove {0} signals", userSignalToRemove.Count);

                        foreach (var userSubscribed in userSignalToRemove)
                        {
                            ctx.SUBSCRIPTION.Remove(userSubscribed);
                        }
                    }
                    else
                    {
                        Logger.ErrorFormat("UnsubscribeSubscriber(#{0}) - владелец сигнала #{1} не найден",
                                           sub.User, sub.Service);
                    }
                }

                // убрать саму подписку
                ctx.SUBSCRIPTION.Remove(sub);
                // !! с уведомлением пока что вопрос

                return(true);
            }
            catch (Exception ex)
            {
                Logger.Error("Error in UnsubscribeSubscriber()", ex);
                return(false);
            }
        }
 public void InsertOrUpdate(SUBSCRIPTION spec)
 {
     if (spec.SUBSCRIPTIONID == default(int))  // New entity
     {
         _context.Entry(spec).State = EntityState.Added;
     }
     else        // Existing entity
     {
         _context.Entry(spec).State = EntityState.Modified;
     }
 }
 public ActionResult Edit([Bind(Include = "idUser,fullname,identificationCard,age,email,profesion,idProvince,canton,district")] SUBSCRIPTION sUBSCRIPTION)
 {
     if (ModelState.IsValid)
     {
         db.Entry(sUBSCRIPTION).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.idProvince = new SelectList(db.PROVINCE, "idProvince", "province1", sUBSCRIPTION.idProvince);
     return(View(sUBSCRIPTION));
 }
 public void InsertOrUpdateGraph(SUBSCRIPTION specGraph)
 {
     if (specGraph.State == DOCVIDEO.ObjectState.State.Added)
     {
         _context.SUBSCRIPTIONS.Add(specGraph);
     }
     else
     {
         _context.SUBSCRIPTIONS.Add(specGraph);
         _context.ApplyStateChanges();
     }
 }
        public bool findSubBool(string email)
        {
            SUBSCRIPTION sub = db.Database.SqlQuery <SUBSCRIPTION>("SELECT * FROM SUBSCRIPTION WHERE email = '" + email + "';").FirstOrDefault();

            if (sub == null)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
        public SUBSCRIPTION findSub(string email)
        {
            SUBSCRIPTION sub = db.Database.SqlQuery <SUBSCRIPTION>("SELECT * FROM SUBSCRIPTION WHERE email = '" + email + "'").FirstOrDefault();

            if (sub == null)
            {
                return(null);
            }
            else
            {
                return(sub);
            }
        }
        // GET: Suscripcion/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SUBSCRIPTION sUBSCRIPTION = db.SUBSCRIPTION.Find(id);

            if (sUBSCRIPTION == null)
            {
                return(HttpNotFound());
            }
            return(View(sUBSCRIPTION));
        }
        // GET: Suscripcion/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SUBSCRIPTION sUBSCRIPTION = db.SUBSCRIPTION.Find(id);

            if (sUBSCRIPTION == null)
            {
                return(HttpNotFound());
            }
            ViewBag.idProvince = new SelectList(db.PROVINCE, "idProvince", "province1", sUBSCRIPTION.idProvince);
            return(View(sUBSCRIPTION));
        }
        public ActionResult Create([Bind(Include = "idUser,fullname,identificationCard,age,email,profesion,idProvince,canton,district")] SUBSCRIPTION sUBSCRIPTION)
        {
            if (findSub(sUBSCRIPTION.email) != null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden));
            }
            if (ModelState.IsValid)
            {
                db.SUBSCRIPTION.Add(sUBSCRIPTION);
                db.SaveChanges();
                emailController.sendEmail("Confirmar cuenta banco central", "Cuenta de " + sUBSCRIPTION.fullname + " creada con éxito", sUBSCRIPTION.email);
                @ViewBag.sub_create = "Suscripción realizada correctamente";
            }

            ViewBag.idProvince = new SelectList(db.PROVINCE, "idProvince", "province1", sUBSCRIPTION.idProvince);
            return(View(sUBSCRIPTION));
        }
Exemplo n.º 11
0
        /// <summary>
        /// отключить подписчика
        /// заодно отрубить ему торговые сигналы
        /// </summary>
        public bool UnsubscribeSubscriber(TradeSharpConnection ctx, SUBSCRIPTION sub)
        {
            // отписать подписчика и сформировать для него уведомление
            try
            {
                var service = ctx.SERVICE.First(s => s.ID == sub.Service);
                Logger.InfoFormat("UnsubscribeSubscriber(srv={0}, user={1}, srvAccount={2})",
                    sub.Service, sub.User, service.AccountId);

                // отписать от торг. сигналов?
                if (service.ServiceType == (int)PaidServiceType.Signals)
                {
                    var signalService = (from srv in ctx.SERVICE
                                         where srv.ID == sub.Service
                                         select srv).FirstOrDefault();

                    if (signalService != null)
                    {
                        var signalId = signalService.ID;
                        var query = (from us in ctx.SUBSCRIPTION
                                     where us.Service == signalId
                                        && us.User == sub.User
                                     select us);

                        var userSignalToRemove = new List<SUBSCRIPTION>();
                        foreach (var userSubscribed in query)
                            userSignalToRemove.Add(userSubscribed);
                        Logger.InfoFormat("UnsubscribeSubscriber(): remove {0} signals", userSignalToRemove.Count);

                        foreach (var userSubscribed in userSignalToRemove)
                            ctx.SUBSCRIPTION.Remove(userSubscribed);
                    }
                    else
                    {
                        Logger.ErrorFormat("UnsubscribeSubscriber(#{0}) - владелец сигнала #{1} не найден",
                            sub.User, sub.Service);
                    }
                }

                // убрать саму подписку
                ctx.SUBSCRIPTION.Remove(sub);
                // !! с уведомлением пока что вопрос

                return true;
            }
            catch (Exception ex)
            {
                Logger.Error("Error in UnsubscribeSubscriber()", ex);
                return false;
            }
        }
Exemplo n.º 12
0
        public bool SubscribeOnService(TradeSharpConnection ctx,
            int userId, int serviceId, bool renewAuto, bool unsubscribe,
            AutoTradeSettings tradeSets, out WalletError error)
        {
            // имеющаяся подписка
            var subs = ctx.SUBSCRIPTION.FirstOrDefault(s => s.Service == serviceId && s.User == userId);

            // просто отписаться от сервиса
            if (unsubscribe)
            {
                error = WalletError.OK;
                if (subs == null)
                    return true;
                ctx.SUBSCRIPTION.Remove(subs);
                try
                {
                    ctx.SaveChanges();
                }
                catch (Exception ex)
                {
                    Logger.Error("Ошибка удаления подписки (SubscribeOnService)", ex);
                    error = WalletError.ServerError;
                    return false;
                }

                return true;
            }

            var paidService = ctx.SERVICE.FirstOrDefault(s => s.ID == serviceId);
            if (paidService == null)
            {
                error = WalletError.InvalidData;
                return false;
            }

            // проверить - не подписывается ли пользователь сам на себя?
            if (paidService.User == userId)
            {
                error = WalletError.InvalidData;
                return false;
            }

            // провести списание денежных средств
            // содрать денежку
            var feeError = ChargeFeeOnSubscription(ctx, serviceId, userId, false);
            if (feeError != WalletError.OK)
            {
                error = feeError;
                return false;
            }

            // продлить или обновить подписку
            var subExists = subs != null;
            if (subs == null)
                subs = new SUBSCRIPTION();
            subs.RenewAuto = renewAuto;
            subs.TimeEnd = DateTime.Now.Date.AddDays(1);
            subs.TimeStarted = DateTime.Now.Date;
            subs.User = userId;
            subs.Service = serviceId;
            if (!subExists)
                ctx.SUBSCRIPTION.Add(subs);

            // обновить или создать настройки торговли
            var signalTradeSets = ctx.SUBSCRIPTION_SIGNAL.FirstOrDefault(s => s.Service == serviceId && s.User == userId);
            var setsExists = signalTradeSets != null;
            if (signalTradeSets == null)
                signalTradeSets = new SUBSCRIPTION_SIGNAL();
            signalTradeSets.AutoTrade = tradeSets.TradeAuto;
            signalTradeSets.FixedVolume = tradeSets.FixedVolume;
            signalTradeSets.HedgingOrdersEnabled = tradeSets.HedgingOrdersEnabled;
            signalTradeSets.MaxLeverage = tradeSets.MaxLeverage;
            signalTradeSets.MaxVolume = tradeSets.MaxVolume;
            signalTradeSets.MinVolume = tradeSets.MinVolume;
            signalTradeSets.PercentLeverage = tradeSets.PercentLeverage;
            signalTradeSets.Service = serviceId;
            signalTradeSets.StepVolume = tradeSets.StepVolume;
            signalTradeSets.User = userId;
            signalTradeSets.TargetAccount = tradeSets.TargetAccount;
            signalTradeSets.VolumeRound = (int?)tradeSets.VolumeRound;
            if (!setsExists)
                ctx.SUBSCRIPTION_SIGNAL.Add(signalTradeSets);

            try
            {
                ctx.SaveChanges();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка сохранения подписки (SubscribeOnService)", ex);
                error = WalletError.ServerError;
                return false;
            }

            error = WalletError.OK;
            return true;
        }
Exemplo n.º 13
0
        public bool SubscribeOnService(TradeSharpConnection ctx,
                                       int userId, int serviceId, bool renewAuto, bool unsubscribe,
                                       AutoTradeSettings tradeSets, out WalletError error)
        {
            // имеющаяся подписка
            var subs = ctx.SUBSCRIPTION.FirstOrDefault(s => s.Service == serviceId && s.User == userId);

            // просто отписаться от сервиса
            if (unsubscribe)
            {
                error = WalletError.OK;
                if (subs == null)
                {
                    return(true);
                }
                ctx.SUBSCRIPTION.Remove(subs);
                try
                {
                    ctx.SaveChanges();
                }
                catch (Exception ex)
                {
                    Logger.Error("Ошибка удаления подписки (SubscribeOnService)", ex);
                    error = WalletError.ServerError;
                    return(false);
                }

                return(true);
            }

            var paidService = ctx.SERVICE.FirstOrDefault(s => s.ID == serviceId);

            if (paidService == null)
            {
                error = WalletError.InvalidData;
                return(false);
            }

            // проверить - не подписывается ли пользователь сам на себя?
            if (paidService.User == userId)
            {
                error = WalletError.InvalidData;
                return(false);
            }

            // провести списание денежных средств
            // содрать денежку
            var feeError = ChargeFeeOnSubscription(ctx, serviceId, userId, false);

            if (feeError != WalletError.OK)
            {
                error = feeError;
                return(false);
            }

            // продлить или обновить подписку
            var subExists = subs != null;

            if (subs == null)
            {
                subs = new SUBSCRIPTION();
            }
            subs.RenewAuto   = renewAuto;
            subs.TimeEnd     = DateTime.Now.Date.AddDays(1);
            subs.TimeStarted = DateTime.Now.Date;
            subs.User        = userId;
            subs.Service     = serviceId;
            if (!subExists)
            {
                ctx.SUBSCRIPTION.Add(subs);
            }

            // обновить или создать настройки торговли
            var signalTradeSets = ctx.SUBSCRIPTION_SIGNAL.FirstOrDefault(s => s.Service == serviceId && s.User == userId);
            var setsExists      = signalTradeSets != null;

            if (signalTradeSets == null)
            {
                signalTradeSets = new SUBSCRIPTION_SIGNAL();
            }
            signalTradeSets.AutoTrade            = tradeSets.TradeAuto;
            signalTradeSets.FixedVolume          = tradeSets.FixedVolume;
            signalTradeSets.HedgingOrdersEnabled = tradeSets.HedgingOrdersEnabled;
            signalTradeSets.MaxLeverage          = tradeSets.MaxLeverage;
            signalTradeSets.MaxVolume            = tradeSets.MaxVolume;
            signalTradeSets.MinVolume            = tradeSets.MinVolume;
            signalTradeSets.PercentLeverage      = tradeSets.PercentLeverage;
            signalTradeSets.Service       = serviceId;
            signalTradeSets.StepVolume    = tradeSets.StepVolume;
            signalTradeSets.User          = userId;
            signalTradeSets.TargetAccount = tradeSets.TargetAccount;
            signalTradeSets.VolumeRound   = (int?)tradeSets.VolumeRound;
            if (!setsExists)
            {
                ctx.SUBSCRIPTION_SIGNAL.Add(signalTradeSets);
            }

            try
            {
                ctx.SaveChanges();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка сохранения подписки (SubscribeOnService)", ex);
                error = WalletError.ServerError;
                return(false);
            }

            error = WalletError.OK;
            return(true);
        }
Exemplo n.º 14
0
 public static Subscription DecorateSubscription(SUBSCRIPTION sub)
 {
     return new Subscription
         {
             User = sub.User,
             RenewAuto = sub.RenewAuto,
             Service = sub.Service,
             TimeEnd = sub.TimeEnd,
             TimeStarted = sub.TimeStarted
         };
 }