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