public object InitializeBooster(string userId, ChestFields chestItem, StoreItem parameters, int ProductId) { // SetFinished(userId); var boosterData = new BoosterField(); boosterData.UserId = userId; boosterData.UserChestId = chestItem.Id; boosterData.StoreProductId = ProductId; boosterData.AdvancedImgUrls = parameters.AdvancedImgUrls; // todo from properties Dictionary <string, dynamic> properties = Json.Decode(parameters.property); boosterData.Property = parameters.property; boosterData.BasicDuration = properties.ContainsKey("basicDuration") ? properties["basicDuration"] : null; if (ExistsActive(userId, ProductId)) // if (true) { UpdateActivation(boosterData); } else { NewActivate(boosterData); } return(new { boosterData, massage = "Вы активировали бустер такой то" }); }
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(); } }
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(); } }