Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #7
0
        /// <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);
            }
        }
Beispiel #8
0
        /// <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);
            }
        }
Beispiel #9
0
 /// <summary>
 /// Create hour slot
 /// </summary>
 /// <param name="slot"></param>
 /// <returns></returns>
 public Task <bool> Add(Slot1Hour slot)
 {
     return(SetHourSlot(slot, true));
 }