Ejemplo n.º 1
0
        public ActionResult Create(StoreActivity dto)
        {
            var storeIds          = Request.Params["StoreIds"];
            var memberTypes       = Request.Params["MemberTypes"];
            var onlyOncePerMember = Request.Params["OnlyOncePerMember"];

            if (onlyOncePerMember != null && onlyOncePerMember == "on")
            {
                dto.OnlyOncePerMember = true;
            }
            else
            {
                dto.OnlyOncePerMember = false;
            }
            if (dto.MinConsume < dto.DiscountMoney)
            {
                return(Json(new OperationResult(OperationResultType.Error, "折扣金额不可高于最低消费金额")));
            }
            dto.StoreIds    = storeIds;
            dto.MemberTypes = memberTypes;
            dto.OperatorId  = AuthorityHelper.OperatorId;
            var result = _storeActivityContract.Insert(dto);

            return(Json(result));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 载入创建数据
        /// </summary>
        /// <returns></returns>
        public ActionResult Create()
        {
            var memberTypeList = _memberTypeContract.SelectList(string.Empty);

            memberTypeList.Add(new SelectListItem()
            {
                Text = "非会员", Value = "-1"
            });
            ViewBag.MemberType = memberTypeList;
            var activity = new StoreActivity();

            return(PartialView(activity));
        }
Ejemplo n.º 3
0
        public async Task StoreDailyLeaderboardsAsync(
            IEnumerable <DailyLeaderboard> leaderboards,
            CancellationToken cancellationToken)
        {
            using (var operation = telemetryClient.StartOperation <RequestTelemetry>("Store daily leaderboards"))
            {
                try
                {
                    using (var activity = new StoreActivity(Log, "daily leaderboards"))
                    {
                        var rowsAffected = await storeClient.BulkUpsertAsync(leaderboards, cancellationToken).ConfigureAwait(false);

                        activity.Report(rowsAffected);
                    }

                    using (var activity = new StoreActivity(Log, "players"))
                    {
                        var players = leaderboards
                                      .SelectMany(l => l.Entries)
                                      .Select(e => e.SteamId)
                                      .Distinct()
                                      .Select(s => new Player {
                            SteamId = s
                        });

                        var options = new BulkUpsertOptions {
                            UpdateWhenMatched = false
                        };
                        var rowsAffected = await storeClient.BulkUpsertAsync(players, options, cancellationToken).ConfigureAwait(false);

                        activity.Report(rowsAffected);
                    }

                    using (var activity = new StoreActivity(Log, "replays"))
                    {
                        var replays = leaderboards
                                      .SelectMany(l => l.Entries)
                                      .Where(e => e.ReplayId != null)
                                      .Select(e => e.ReplayId.Value)
                                      .Distinct()
                                      .Select(r => new Replay {
                            ReplayId = r
                        });

                        var options = new BulkUpsertOptions {
                            UpdateWhenMatched = false
                        };
                        var rowsAffected = await storeClient.BulkUpsertAsync(replays, options, cancellationToken).ConfigureAwait(false);

                        activity.Report(rowsAffected);
                    }

                    using (var activity = new StoreActivity(Log, "daily entries"))
                    {
                        var entries = leaderboards.SelectMany(e => e.Entries);

                        var rowsAffected = await storeClient.BulkUpsertAsync(entries, cancellationToken).ConfigureAwait(false);

                        activity.Report(rowsAffected);
                    }

                    operation.Telemetry.Success = true;
                }
                catch (Exception) when(operation.Telemetry.MarkAsUnsuccessful())
                {
                }
            }
        }