Example #1
0
        public async Task SetAsync(Guid accountId, AccountFlagType type, CancellationToken ct)
        {
            var flag = await _storage.AccountFlags
                       .FirstOrDefaultAsync(x => x.Type == type && x.AccountId == accountId, ct);

            if (flag != null)
            {
                flag.SetDateTime = DateTime.UtcNow;

                _storage.Update(flag);
            }
            else
            {
                flag = new AccountFlag
                {
                    Id          = Guid.NewGuid(),
                    AccountId   = accountId,
                    Type        = type,
                    SetDateTime = DateTime.UtcNow
                };

                await _storage.AddAsync(flag, ct);
            }

            await _storage.SaveChangesAsync(ct);
        }
Example #2
0
 public void SetFlag(AccountFlag flag, bool value)
 {
     try
     {
         int iFlag = (int)flag;
         if (iFlag >= 0 && iFlag < 32)
         {
             SetFlag(iFlag, value);
         }
     }
     catch (Exception ex) { EventSink.InvokeLogException(new LogExceptionEventArgs(ex)); }
 }
Example #3
0
        public bool GetFlag(AccountFlag flag)
        {
            bool bReturn = false;

            try
            {
                int iFlag = (int)flag;
                if (iFlag >= 0 && iFlag < 32)
                {
                    bReturn = GetFlag(iFlag);
                }
            }
            catch (Exception ex) { EventSink.InvokeLogException(new LogExceptionEventArgs(ex)); }
            return(bReturn);
        }
        public async Task <IActionResult> SetFlags([FromBody] Messages.AccountFlagSetRequest msg)
        {
            // Validate that the user is logged in.
            var account = await GetCurrentAccountAsync();

            if (account == null)
            {
                return(Unauthorized());
            }

            // Validate the request
            if (msg.Flags == null || !msg.Flags.Any())
            {
                return(BadRequest("Must provide at least one account flag to set"));
            }

            foreach (var flag in msg.Flags)
            {
                var name = flag.Key;
                if (string.IsNullOrWhiteSpace(name))
                {
                    return(BadRequest("Account flag name cannot be empty or whitespace. Was: '" + name + "'."));
                }

                if (name.Length > AccountFlag.MaxNameLength)
                {
                    return(BadRequest("Account flag name cannot be longer than " +
                                      AccountFlag.MaxNameLength + " characters. Was: " + name.Length + " characters, '" +
                                      name + "'."));
                }
            }

            // Edit/change the flags as needed.
            var accountId = account.Id;
            var flags     = await Db.AccountFlags.Where(f => f.AccountId == accountId).ToListAsync();

            var flagsByName = flags.ToDictionary(flag => flag.Name);

            foreach (var flagToSet in msg.Flags)
            {
                var found = flagsByName.TryGetValue(flagToSet.Key, out var flagToChange);

                if (found)
                {
                    // Update existing flag.
                    flagToChange.Value = flagToSet.Value;
                    flagToChange.LastChangedTimeUtc = _timeService.UtcNow;
                    Db.AccountFlags.Update(flagToChange);
                }
                else
                {
                    // Add a new flag.
                    var newFlag = new AccountFlag
                    {
                        Id                 = Guid.NewGuid(),
                        AccountId          = accountId,
                        Name               = flagToSet.Key,
                        Value              = flagToSet.Value,
                        LastChangedTimeUtc = _timeService.UtcNow
                    };

                    Db.AccountFlags.Add(newFlag);
                }
            }

            await Db.SaveChangesAsync();

            return(NoContent());
        }
Example #5
0
		public void SetFlag(AccountFlag flag, bool value)
		{
			try
			{
				int iFlag = (int)flag;
				if (iFlag >= 0 && iFlag < 32)
				{
					SetFlag(iFlag, value);
				}
			}
			catch (Exception ex) { EventSink.InvokeLogException(new LogExceptionEventArgs(ex)); }
		}
Example #6
0
		public bool GetFlag(AccountFlag flag)
		{
			bool bReturn = false;
			try
			{
				int iFlag = (int)flag;
				if (iFlag >= 0 && iFlag < 32)
				{
					bReturn = GetFlag(iFlag);
				}
			}
			catch (Exception ex) { EventSink.InvokeLogException(new LogExceptionEventArgs(ex)); }
			return bReturn;
		}