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(); } }