示例#1
0
        protected object NewActivate(BoosterField data)
        {
            var db = new SiteDataContext();

            try
            {
                db.Connection.Open();
                db.Transaction = db.Connection.BeginTransaction();

                var userId        = data.UserId;
                var userChestId   = data.UserChestId;
                var basicDuration = data.BasicDuration;

                var currDate    = DateTime.UtcNow;
                var dateEndTime = currDate.AddSeconds(basicDuration);

                var days    = (decimal)data.BasicDuration / (60 * 60 * 24);
                var sucsess = "Бустер активирован";

//                var store = new Store();


                var TranslateText = Store.GetTranslate(data.StoreProductId, db);


                var boosterProperty = new
                {
                    TranslateText,
                    Property        = Json.Decode(data.Property),
                    AdvancedImgUrls = Json.Decode(data.AdvancedImgUrls)
                };

                //========================================


                db.booster.InsertOnSubmit(new booster
                {
                    userId         = userId,
                    storeProductId = data.StoreProductId,
                    user_chestId   = userChestId,
                    basicDuration  = basicDuration,
                    property       = JsonConvert.SerializeObject(boosterProperty),
                    startTime      = currDate,
                    endTime        = dateEndTime
                });

                db.SubmitChanges();


                var queryUserChest = db.user_chest
                                     .Where(uch => uch.Id == userChestId)
                                     .Select(uch => uch).Single();
                queryUserChest.dateActivate = currDate;
                queryUserChest.activated    = true;
                db.SubmitChanges();


                db.Transaction.Commit();


                return(new
                {
                    days = Math.Truncate(days),
                    dateEndTime,
                    sucsess
                });
            }
            catch (Exception)
            {
                db.Transaction.Rollback();

                return(new
                {
                    errors = "Rollback"
                });
            }
            finally
            {
                db.Transaction.Dispose();
                db.Connection.Close();
            }
        }
示例#2
0
        protected object UpdateActivation(BoosterField data)
        {
            var db = new SiteDataContext();

            try
            {
                db.Connection.Open();
                db.Transaction = db.Connection.BeginTransaction();


                var userId         = data.UserId;
                var userChestId    = data.UserChestId;
                var storeProductId = data.StoreProductId;
                var basicDuration  = data.BasicDuration;
                var currDate       = DateTime.UtcNow;


                Cleaner(userId, storeProductId, db);

                var curEndTime = GetMaxEndTime(userId, storeProductId, currDate, db);

                var boosterProperty = GetItemProperty(storeProductId);

                db.booster.InsertOnSubmit(new booster
                {
                    userId         = userId,
                    user_chestId   = userChestId,
                    storeProductId = storeProductId,
                    basicDuration  = basicDuration,
                    property       = boosterProperty,
                    startTime      = currDate,
                    endTime        = currDate.AddSeconds(basicDuration).Add(curEndTime - currDate)
                });
                db.SubmitChanges();

                var userChest = new UserChest();
                userChest.UpdateActivateData(userChestId);

                db.Transaction.Commit();


                return(new
                {
                    userId,
                    user_chestId = userChestId,
                    storeProductId,
                    basicDuration,
                    property = boosterProperty,
                    startTime = currDate,
                    endTime = currDate.AddSeconds(basicDuration).Add(curEndTime - currDate)
                });
            }
            catch (Exception)
            {
                db.Transaction.Rollback();
                return(new
                {
                    Rollback = "Rollback"
                });
            }
            finally
            {
                db.Transaction.Dispose();
                db.Connection.Close();
            }
        }