public async Task <StoreOpenDayDto[]> UpdateOpenDayAsync(int branchId, StoreOpenDayDto[] dtoArr)
        {
            var storeBranchE = await Repository.GetAsync(branchId) ?? throw new EntityNotFoundException();

            var openDayEs = await AsyncExecuter.ToListAsync(StoreOpenDayRepository.Where(e => e.StoreBranchID == branchId));

            foreach (var entity in openDayEs)
            {
                var dto = dtoArr.SingleOrDefault(e => e.DayOfWeek == entity.DayOfWeek);
                if (dto == null)
                {
                    await StoreOpenDayRepository.DeleteAsync(entity, autoSave : true);
                }
                else
                {
                    entity.OpeningTime = dto.OpeningTime;
                    entity.ClosingTime = dto.ClosingTime;
                    await StoreOpenDayRepository.UpdateAsync(entity, autoSave : true);
                }
            }

            foreach (var dto in dtoArr)
            {
                var entity = openDayEs.SingleOrDefault(e => e.DayOfWeek == dto.DayOfWeek);
                if (entity == null)
                {
                    var cEntity = ObjectMapper.Map <StoreOpenDayDto, StoreOpenDayEntity>(dto);
                    await StoreOpenDayRepository.InsertAsync(cEntity, autoSave : true);
                }
            }
            openDayEs = await AsyncExecuter.ToListAsync(StoreOpenDayRepository.Where(e => e.StoreBranchID == branchId));

            return(ObjectMapper.Map <StoreOpenDayEntity[], StoreOpenDayDto[]>(openDayEs.ToArray()));
        }
        public async Task <StoreOpenDayDto> GetOpenDayAsync(int branchId, DayOfWeek dayOfWeek)
        {
            var entity = await StoreOpenDayRepository.GetAsync(e => e.StoreBranchID == branchId && e.DayOfWeek == dayOfWeek)
                         ?? throw new EntityNotFoundException();

            return(ObjectMapper.Map <StoreOpenDayEntity, StoreOpenDayDto>(entity));
        }
        public async Task <StoreOpenDayDto> CreateOpenDayAsync(int branchId, StoreOpenDayDto dto)
        {
            var branchE = await Repository.GetAsync(branchId) ?? throw new EntityNotFoundException();

            var openDayE = await StoreOpenDayRepository.GetAsync(e => e.StoreBranchID == branchId && e.DayOfWeek == dto.DayOfWeek);

            dto.StoreBranchID = branchId;

            var entity = ObjectMapper.Map <StoreOpenDayDto, StoreOpenDayEntity>(dto);

            await StoreOpenDayRepository.InsertAsync(entity, autoSave : true);

            return(ObjectMapper.Map <StoreOpenDayEntity, StoreOpenDayDto>(entity));
        }
        public override async Task <StoreBranchDto> CreateAsync(StoreBranchCreateDto input)
        {
            _ = StoreChainRepository.GetAsync(input.StoreChainID) ?? throw new BusinessException("Invalid storeChain");

            _ = CityRepository.GetAsync(input.CityID) ?? throw new BusinessException("Invalid city");

            var storeBranchE = ObjectMapper.Map <StoreBranchCreateDto, StoreBranchEntity>(input);

            await Repository.InsertAsync(storeBranchE, autoSave : true);

            foreach (var dayoftheweek in Enum.GetNames(typeof(DayOfWeek)))
            {
                var storeOpenDayE = new StoreOpenDayEntity(storeBranchE.Id, Enum.Parse <DayOfWeek>(dayoftheweek))
                {
                    OpeningTime = new TimeSpan(7, 30, 0),
                    ClosingTime = new TimeSpan(22, 30, 0)
                };
                await StoreOpenDayRepository.InsertAsync(storeOpenDayE, autoSave : true);
            }

            return(ObjectMapper.Map <StoreBranchEntity, StoreBranchDto>(storeBranchE));
        }
 public async Task DeleteOpenDayAsync(int branchId, DayOfWeek dayOfWeek)
 {
     await StoreOpenDayRepository.DeleteAsync(e => e.StoreBranchID == branchId && e.DayOfWeek == dayOfWeek);
 }
        public async Task <StoreOpenDayDto[]> GetAllOpenDayAsync(int branchId)
        {
            var itemsQ = await AsyncExecuter.ToListAsync(StoreOpenDayRepository.Where(e => e.StoreBranchID == branchId));

            return(ObjectMapper.Map <StoreOpenDayEntity[], StoreOpenDayDto[]>(itemsQ.ToArray()));
        }