/// <summary> /// Updates hour slot /// </summary> /// <param name="slot"></param> /// <param name="newOnly"></param> /// <returns></returns> public virtual async Task <bool> SetHourSlot(Slot1Hour 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_H}", $"{slot.PlaceId}_{slot.Time.Ticks}", slot, newOnly); if (newOnly && !ret) { throw new Exception(localizer[Repository_RedisRepository_SlotRepository.Error_creating_hour_slot].Value); } await redisCacheClient.Db0.SetAddAsync($"{configuration["db-prefix"]}{REDIS_KEY_SLOT_OBJECTS_H_BY_PLACE_AND_DAY}_{slot.PlaceId}_{slot.DaySlotId}", $"{slot.PlaceId}_{slot.Time.Ticks}"); return(true); } catch (Exception exc) { logger.LogError(exc, exc.Message); return(false); } }
/// <summary> /// Remove hour slot /// </summary> /// <param name="slot"></param> /// <returns></returns> public override async Task <bool> RemoveSlotH(Slot1Hour slot) { string key = $"{slot.PlaceId}_{slot.Time.UtcTicks}"; if (!dataH.ContainsKey(key)) { throw new Exception("Item already exists"); } dataH.TryRemove(key, out var _); return(true); }
/// <summary> /// Decrement registrations for hour slot /// </summary> /// <param name="slotH"></param> /// <returns></returns> public async Task DecrementRegistrationHourSlot(Slot1Hour slotH) { if (slotH is null) { throw new ArgumentNullException(nameof(slotH)); } var update = await GetHourSlot(slotH.PlaceId, slotH.Time.Ticks); update.Registrations--; await SetHourSlot(update, false); }
/// <summary> /// Decrement registrations for hour slot /// </summary> /// <param name="slotH"></param> /// <returns></returns> public async Task <long> DecrementRegistrationHourSlot(Slot1Hour slotH) { if (slotH is null) { throw new ArgumentNullException(nameof(slotH)); } var update = await GetHourSlot(slotH.PlaceId, slotH.Time.UtcTicks); update.Registrations = await DecrementStats(StatsType.Enum.RegisteredTo, SlotType.Enum.Hour, slotH.PlaceId, slotH.Time); await SetHourSlot(update, false); return(update.Registrations); }
/// <summary> /// Deletes single hour slot /// </summary> /// <param name="slot"></param> /// <returns></returns> public async override Task <bool> DeleteHourSlot(Slot1Hour slot) { if (slot is null) { throw new ArgumentNullException(nameof(slot)); } string key = $"{slot.PlaceId}_{slot.Time.UtcTicks}"; if (dataH.ContainsKey(key)) { dataH.TryRemove(key, out var _); return(true); } return(false); }
/// <summary> /// Set hour slot /// </summary> /// <param name="slot"></param> /// <param name="newOnly"></param> /// <returns></returns> public override async Task <bool> SetHourSlot(Slot1Hour slot, bool newOnly) { if (slot is null) { throw new ArgumentNullException(nameof(slot)); } string key = $"{slot.PlaceId}_{slot.Time.UtcTicks}"; if (newOnly) { if (dataH.ContainsKey(key)) { throw new Exception("Item already exists"); } } dataH[key] = slot; return(true); }
/// <summary> /// Deletes hour slot /// </summary> /// <param name="slot"></param> /// <returns></returns> public virtual async Task <bool> DeleteHourSlot(Slot1Hour slot) { if (slot is null) { throw new ArgumentNullException(nameof(slot)); } try { var ret = await redisCacheClient.Db0.HashDeleteAsync($"{configuration["db-prefix"]}{REDIS_KEY_SLOT_OBJECTS_H}", $"{slot.PlaceId}_{slot.Time.Ticks}"); return(true); } catch (Exception exc) { logger.LogError(exc, exc.Message); return(false); } }
/// <summary> /// Remove hour slot /// </summary> /// <param name="slot"></param> /// <returns></returns> public virtual async Task <bool> RemoveSlotH(Slot1Hour slot) { if (slot is null) { throw new ArgumentNullException(nameof(slot)); } try { var ret = await redisCacheClient.Db0.SetRemoveAsync <string>($"{configuration["db-prefix"]}{REDIS_KEY_SLOT_OBJECTS_H}", $"{slot.PlaceId}_{slot.Time.UtcTicks}"); await redisCacheClient.Db0.SetRemoveAsync($"{configuration["db-prefix"]}{REDIS_KEY_SLOT_OBJECTS_H_BY_PLACE_AND_DAY}_{slot.PlaceId}_{slot.DaySlotId}", $"{slot.PlaceId}_{slot.Time.UtcTicks}"); return(true); } catch (Exception exc) { logger.LogError(exc, exc.Message); return(false); } }
/// <summary> /// Create hour slot /// </summary> /// <param name="slot"></param> /// <returns></returns> public Task <bool> Add(Slot1Hour slot) { return(SetHourSlot(slot, true)); }