/// <summary> /// Updates minute slot /// </summary> /// <param name="slot"></param> /// <param name="newOnly"></param> /// <returns></returns> public virtual async Task <bool> SetMinuteSlot(Slot5Min slot, bool newOnly) { if (slot is null) { throw new ArgumentNullException(nameof(slot)); } try { var ret = await redisCacheClient.Db0.HashSetAsync($"{configuration["db-prefix"]}{REDIS_KEY_SLOT_OBJECTS_M}", $"{slot.PlaceId}_{slot.Time.Ticks}", slot, newOnly); if (newOnly && !ret) { throw new Exception(localizer[Repository_RedisRepository_SlotRepository.Error_creating_minute_slot].Value); } await redisCacheClient.Db0.SetAddAsync($"{configuration["db-prefix"]}{REDIS_KEY_SLOT_OBJECTS_M_BY_PLACE_AND_HOUR}_{slot.PlaceId}_{slot.HourSlotId}", $"{slot.PlaceId}_{slot.Time.Ticks}"); return(true); } catch (Exception exc) { logger.LogError(exc, exc.Message); return(false); } }
/// <summary> /// Decrement registrations for minute slot /// </summary> /// <param name="slotM"></param> /// <returns></returns> public async Task DecrementRegistration5MinSlot(Slot5Min slotM) { if (slotM is null) { throw new ArgumentNullException(nameof(slotM)); } var update = await Get5MinSlot(slotM.PlaceId, slotM.Time.Ticks); update.Registrations--; await SetMinuteSlot(update, false); }
/// <summary> /// Decrement registrations for minute slot /// </summary> /// <param name="slotM"></param> /// <returns></returns> public async Task <long> DecrementRegistration5MinSlot(Slot5Min slotM) { if (slotM is null) { throw new ArgumentNullException(nameof(slotM)); } var update = await Get5MinSlot(slotM.PlaceId, slotM.Time.UtcTicks); update.Registrations = await DecrementStats(StatsType.Enum.RegisteredTo, SlotType.Enum.Min, slotM.PlaceId, slotM.Time); await SetMinuteSlot(update, false); return(update.Registrations); }
/// <summary> /// Deletes single minute slot /// </summary> /// <param name="slot"></param> /// <returns></returns> public async override Task <bool> DeleteMinuteSlot(Slot5Min slot) { if (slot is null) { throw new ArgumentNullException(nameof(slot)); } string key = $"{slot.PlaceId}_{slot.Time.UtcTicks}"; if (dataM.ContainsKey(key)) { dataM.TryRemove(key, out var _); return(true); } return(false); }
/// <summary> /// Set minute slot /// </summary> /// <param name="slot"></param> /// <param name="newOnly"></param> /// <returns></returns> public override async Task <bool> SetMinuteSlot(Slot5Min slot, bool newOnly) { if (slot is null) { throw new ArgumentNullException(nameof(slot)); } string key = $"{slot.PlaceId}_{slot.Time.Ticks}"; if (newOnly) { if (dataM.ContainsKey(key)) { throw new Exception("Item already exists"); } } dataM[key] = slot; return(true); }
/// <summary> /// Updates minute slot /// </summary> /// <param name="slot"></param> /// <returns></returns> public virtual async Task <bool> DeleteMinuteSlot(Slot5Min slot) { if (slot is null) { throw new ArgumentNullException(nameof(slot)); } try { var ret = await redisCacheClient.Db0.HashDeleteAsync($"{configuration["db-prefix"]}{REDIS_KEY_SLOT_OBJECTS_M}", $"{slot.PlaceId}_{slot.Time.Ticks}"); return(true); } catch (Exception exc) { logger.LogError(exc, exc.Message); return(false); } }
/// <summary> /// Create minute slot /// </summary> /// <param name="slot"></param> /// <returns></returns> public Task <bool> Add(Slot5Min slot) { return(SetMinuteSlot(slot, true)); }