Exemplo n.º 1
0
        public async Task <CityDto[]> GetRiderCoverageAsync()
        {
            var userId = CurrentUser.Id;
            var riderE = await Repository.GetAsync(e => e.UserID == userId) ?? throw new BusinessException("User must signin first");

            var cityEArr = await AsyncExecuter.ToArrayAsync(from cityR in CityRepository
                                                            join riderCR in RiderCoverageRepository on cityR.Id equals riderCR.CityID
                                                            where riderCR.RiderID == riderE.Id && riderE.Status != EntityStatusConsts.Blocked
                                                            select cityR);

            return(ObjectMapper.Map <CityEntity[], CityDto[]>(cityEArr));
        }
Exemplo n.º 2
0
        public async Task <CityDto[]> UpdateRiderCoverageAsync(int[] cityIds)
        {
            var userId = CurrentUser.Id;
            var riderE = await Repository.GetAsync(e => e.UserID == userId) ?? throw new BusinessException();

            var cityEArr = new List <CityEntity>();
            var rcEArr   = await AsyncExecuter.ToArrayAsync(RiderCoverageRepository.Where(e => e.RiderID == riderE.Id));

            foreach (var id in cityIds)
            {
                var e = await CityRepository.GetAsync(id) ?? throw new BusinessException("Invalid id");

                cityEArr.Add(e);
            }

            var newCArr = cityEArr.Where(e => rcEArr.FirstOrDefault(ee => ee.CityID == e.Id) == null)
                          .ToArray();

            var removed = rcEArr.Where(e => cityEArr.FirstOrDefault(ee => ee.Id == e.CityID) == null)
                          .ToArray();

            foreach (var nCR in newCArr)
            {
                await RiderCoverageRepository.InsertAsync(new RiderCoverageEntity(riderE.Id, nCR.Id), autoSave : true);
            }

            foreach (var rCR in removed)
            {
                await RiderCoverageRepository.DeleteAsync(e => e.RiderID == riderE.Id && e.CityID == rCR.CityID, autoSave : true);
            }

            var riderCEArr = await AsyncExecuter.ToArrayAsync(from riderCR in RiderCoverageRepository
                                                              join cityR in CityRepository on riderCR.CityID equals cityR.Id
                                                              select cityR);

            return(ObjectMapper.Map <CityEntity[], CityDto[]>(riderCEArr));
        }