public IQueryable <sp_GetCatPlace> QueryExport(CatPlaceCriteria criteria)
        {
            IQueryable <sp_GetCatPlace> data = null;

            if (criteria.PlaceType == CatPlaceTypeEnum.Warehouse)
            {
                ICurrentUser _user       = PermissionExtention.GetUserMenuPermission(currentUser, Menu.catWarehouse);
                var          rangeSearch = PermissionExtention.GetPermissionRange(currentUser.UserMenuPermission.List);
                if (rangeSearch == PermissionRange.None)
                {
                    return(null);
                }
                data = QueryByPermission(criteria, rangeSearch);
            }
            else if (criteria.PlaceType == CatPlaceTypeEnum.Port)
            {
                ICurrentUser _user       = PermissionExtention.GetUserMenuPermission(currentUser, Menu.catPortindex);
                var          rangeSearch = PermissionExtention.GetPermissionRange(currentUser.UserMenuPermission.List);
                if (rangeSearch == PermissionRange.None)
                {
                    return(null);
                }
                data = QueryByPermission(criteria, rangeSearch);
            }
            else
            {
                data = Query(criteria);
            }

            return(data);
        }
        public async Task <IActionResult> ExportTownWard(CatPlaceCriteria catPlaceCriteria)
        {
            Helper helper = new Helper();

            var responseFromApi = await HttpServiceExtension.GetDataFromApi(catPlaceCriteria, aPis.CatalogueAPI + Urls.Catelogue.CatplaceUrl);

            var dataObjects = responseFromApi.Content.ReadAsAsync <List <CatTownWard> >();  //Make sure to add a reference to System.Net.Http.Formatting.dll

            var stream = helper.CreateTownWardExcelFile(dataObjects.Result);

            return(new FileHelper().ExportExcel(stream, FilesNames.TowardName));
        }
        public async Task <IActionResult> ExportPortIndex(CatPlaceCriteria catPlaceCriteria)
        {
            var    accessToken = Request.Headers["Authorization"].ToString();
            Helper helper      = new Helper();

            var responseFromApi = await HttpServiceExtension.PostAPI(catPlaceCriteria, aPis.CatalogueAPI + Urls.Catelogue.CatplaceUrl, accessToken);

            var dataObjects = responseFromApi.Content.ReadAsAsync <List <CatPortIndex> >();

            var stream = helper.CreatePortIndexExcelFile(dataObjects.Result);

            return(new FileHelper().ExportExcel(stream, FilesNames.PortIndex));
        }
        public IQueryable <sp_GetCatPlace> QueryByPermission(CatPlaceCriteria criteria, PermissionRange range)
        {
            var list = QueryCriteria(criteria);

            if (list == null)
            {
                return(null);
            }
            IQueryable <sp_GetCatPlace> data = null;

            if (list == null)
            {
                return(null);
            }
            switch (range)
            {
            case PermissionRange.Owner:
                data = list.Where(x => x.UserCreated == currentUser.UserID);
                break;

            case PermissionRange.Group:
                data = list.Where(x => x.UserCreated == currentUser.UserID ||
                                  x.GroupId == currentUser.GroupId &&
                                  x.DepartmentId == currentUser.DepartmentId &&
                                  x.OfficeId == currentUser.OfficeID &&
                                  x.CompanyId == currentUser.CompanyID);
                break;

            case PermissionRange.Department:
                data = list.Where(x => x.UserCreated == currentUser.UserID || x.DepartmentId == currentUser.DepartmentId && x.OfficeId == currentUser.OfficeID &&
                                  x.CompanyId == currentUser.CompanyID);
                break;

            case PermissionRange.Office:
                data = list.Where(x => x.UserCreated == currentUser.UserID || x.OfficeId == currentUser.OfficeID && x.CompanyId == currentUser.CompanyID);
                break;

            case PermissionRange.Company:
                data = list.Where(x => x.UserCreated == currentUser.UserID || x.CompanyId == currentUser.CompanyID);
                break;

            case PermissionRange.All:
                data = list;
                break;

            default:
                break;
            }

            return(data);
        }
        private IQueryable <sp_GetCatPlace> QueryCriteria(CatPlaceCriteria criteria)
        {
            string placetype = PlaceTypeEx.GetPlaceType(criteria.PlaceType);
            var    list      = GetBy(placetype);

            if (criteria.All == null)
            {
                list = list.Where(x => ((x.Code ?? "").IndexOf(criteria.Code ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  ((x.NameEn ?? "").IndexOf(criteria.NameEn ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  ((x.NameVn ?? "").IndexOf(criteria.NameVn ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  ((x.CountryNameEN ?? "").IndexOf(criteria.CountryNameEN ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  ((x.CountryNameVN ?? "").IndexOf(criteria.CountryNameVN ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  ((x.DistrictNameEN ?? "").IndexOf(criteria.DistrictNameEN ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  ((x.DistrictNameVN ?? "").IndexOf(criteria.DistrictNameVN ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  (x.CountryID == criteria.CountryId || criteria.CountryId == null) &&
                                  (x.ProvinceID == criteria.ProvinceId || criteria.ProvinceId == null) &&
                                  (x.DistrictID == criteria.DistrictId || criteria.DistrictId == null) &&
                                  ((x.ProvinceNameEN ?? "").IndexOf(criteria.ProvinceNameEN ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  ((x.ProvinceNameVN ?? "").IndexOf(criteria.ProvinceNAmeVN ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  ((x.Address ?? "").IndexOf(criteria.Address ?? "", StringComparison.OrdinalIgnoreCase) >= 0) &&
                                  ((x.ModeOfTransport ?? "").IndexOf(criteria.ModeOfTransport ?? "", StringComparison.OrdinalIgnoreCase) > -1) &&
                                  (x.AreaNameEN ?? "").IndexOf(criteria.AreaNameEN ?? "", StringComparison.OrdinalIgnoreCase) > -1 &&
                                  (x.AreaNameVN ?? "").IndexOf(criteria.AreaNameVN ?? "", StringComparison.OrdinalIgnoreCase) > -1 &&
                                  (x.FlightVesselNo ?? "").Contains(criteria.FlightVesselNo ?? "", StringComparison.OrdinalIgnoreCase) == true &&
                                  (x.Active == criteria.Active || criteria.Active == null)
                                  )?.AsQueryable();
            }
            else
            {
                list = list.Where(x => (
                                      ((x.Code ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      ((x.NameEn ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      ((x.NameVn ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      ((x.CountryNameEN ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      ((x.CountryNameVN ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      ((x.DistrictNameEN ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      ((x.DistrictNameVN ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      ((x.ProvinceNameEN ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      ((x.ProvinceNameVN ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      ((x.Address ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      (x.AreaNameEN ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1 ||
                                      (x.AreaNameVN ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1 ||
                                      ((x.ModeOfTransport ?? "").IndexOf(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) > -1) ||
                                      (x.FlightVesselNo ?? "").Contains(criteria.All ?? "", StringComparison.OrdinalIgnoreCase) == true
                                      ) &&
                                  (x.Active == criteria.Active || criteria.Active == null)
                                  )?.AsQueryable();
            }
            return(list);
        }
        public List <CatPlaceViewModel> Paging(CatPlaceCriteria criteria, int page, int size, out int rowsCount)
        {
            IQueryable <sp_GetCatPlace> data    = null;
            List <CatPlaceViewModel>    results = null;

            if (criteria.PlaceType == CatPlaceTypeEnum.Warehouse)
            {
                ICurrentUser _user       = PermissionExtention.GetUserMenuPermission(currentUser, Menu.catWarehouse);
                var          rangeSearch = PermissionExtention.GetPermissionRange(currentUser.UserMenuPermission.List);
                if (rangeSearch == PermissionRange.None)
                {
                    rowsCount = 0;
                    return(null);
                }
                data = QueryByPermission(criteria, rangeSearch);
            }
            else if (criteria.PlaceType == CatPlaceTypeEnum.Port)
            {
                ICurrentUser _user       = PermissionExtention.GetUserMenuPermission(currentUser, Menu.catPortindex);
                var          rangeSearch = PermissionExtention.GetPermissionRange(currentUser.UserMenuPermission.List);
                if (rangeSearch == PermissionRange.None)
                {
                    rowsCount = 0;
                    return(null);
                }
                data = QueryByPermission(criteria, rangeSearch);
            }
            else
            {
                data = Query(criteria);
            }

            rowsCount = data.Select(x => x.ID).Count();
            if (rowsCount == 0)
            {
                return(results);
            }
            if (size > 1)
            {
                data = data.OrderByDescending(x => x.DatetimeModified);
                if (page < 1)
                {
                    page = 1;
                }
                data = data.Skip((page - 1) * size).Take(size);
            }
            results = GetCulturalData(data).ToList();
            return(results);
        }
        public IQueryable <sp_GetCatPlace> Get(CatPlaceCriteria criteria)
        {
            var countries = countryRepository.Get();

            string placetype = PlaceTypeEx.GetPlaceType(criteria.PlaceType);

            // Join left với country.
            var places = from x in DataContext.Get(x => (x.PlaceTypeId == placetype || string.IsNullOrEmpty(placetype) &&
                                                         (x.Active == criteria.Active || criteria.Active == null)) &&
                                                   (x.ModeOfTransport.IndexOf(criteria.ModeOfTransport, StringComparison.OrdinalIgnoreCase) > -1) || string.IsNullOrEmpty(criteria.ModeOfTransport))
                         join coun in countries on x.CountryId equals coun.Id into coun2
                         from coun in coun2.DefaultIfEmpty()
                         select new sp_GetCatPlace
            {
                ID               = x.Id,
                Code             = x.Code,
                NameVn           = x.NameVn,
                NameEn           = x.NameEn,
                DisplayName      = x.DisplayName,
                Address          = x.Address,
                DistrictID       = x.DistrictId,
                DistrictNameEN   = string.Empty,
                DistrictNameVN   = string.Empty,
                ProvinceID       = x.ProvinceId,
                ProvinceNameEN   = string.Empty,
                ProvinceNameVN   = string.Empty,
                CountryNameEN    = coun.NameEn,
                CountryNameVN    = coun.NameVn,
                CountryID        = x.CountryId,
                AreaID           = x.AreaId,
                LocalAreaID      = x.LocalAreaId,
                ModeOfTransport  = x.ModeOfTransport,
                PlaceTypeID      = x.PlaceTypeId,
                Note             = x.Note,
                UserCreated      = x.UserCreated,
                DatetimeCreated  = x.DatetimeCreated,
                UserModified     = x.UserModified,
                DatetimeModified = x.DatetimeModified,
                Active           = x.Active
            };

            return(places);
        }
 public IQueryable <sp_GetCatPlace> Query(CatPlaceCriteria criteria)
 {
     return(QueryCriteria(criteria));
 }