public void UpdateGiveawayStatus(Guid giveawayId, GiveawayStatus newStatus)
        {
            FilterDefinition <Giveaway> filter = Builders <Giveaway> .Filter.Where(x => x.Id == giveawayId);

            UpdateDefinition <Giveaway> add = Builders <Giveaway> .Update.Set(x => x.Status, newStatus);

            Context.AddCommand(() => DbSet.UpdateOneAsync(filter, add));
        }
Beispiel #2
0
        private static IGiveawayBasicInfo SetDates(IGiveawayBasicInfo model)
        {
            if (model != null)
            {
                if (model.StartDate == DateTime.MinValue)
                {
                    model.StartDate = DateTime.Now;
                }

                //int timeZoneOffset = int.Parse(model.TimeZone ?? "0");

                model.StartDate = model.StartDate.ToLocalTime(); //.AddHours(timeZoneOffset);

                if (model.EndDate.HasValue)
                {
                    model.EndDate = model.EndDate.Value.ToLocalTime(); //.AddHours(timeZoneOffset);
                }

                GiveawayStatus effectiveStatus = model.Status;

                if ((model.Status == GiveawayStatus.Draft || model.Status == GiveawayStatus.PendingStart) && model.StartDate <= DateTime.Now)
                {
                    effectiveStatus = GiveawayStatus.OpenForEntries;
                }
                else if ((model.Status == GiveawayStatus.Draft || model.Status == GiveawayStatus.OpenForEntries) && model.StartDate >= DateTime.Now)
                {
                    effectiveStatus = GiveawayStatus.PendingStart;
                }
                else if (model.Status != GiveawayStatus.Ended && model.EndDate.HasValue && DateTime.Now >= model.EndDate.Value)
                {
                    effectiveStatus = GiveawayStatus.PickingWinners;
                }

                if (effectiveStatus != GiveawayStatus.Draft)
                {
                    model.Status = effectiveStatus;
                }
            }

            return(model);
        }