コード例 #1
0
        ///TODO Use Generic Grid View
        public async Task <Tuple <int, List <CarsTransportaionsFullDto> > > GetAllCars(CarTransportationSearchViewModel model, int skip, int take)
        {
            var query = TableNoTracking.Where(a => !a.IsDeleted).ProjectTo <CarsTransportaionsFullDto>();

            query = query.WhereIf(!string.IsNullOrEmpty(model.CarName), a => a.CarName.Contains(model.CarName));
            query = query.WhereIf(!string.IsNullOrEmpty(model.CarModel), a => a.CarModel.Contains(model.CarModel));
            query = query.WhereIf(!string.IsNullOrEmpty(model.MotorSerial), a => a.MotorSerial.Contains(model.MotorSerial));
            query = query.WhereIf(!string.IsNullOrEmpty(model.Plaque), a => a.Plaque.Contains(model.Plaque));
            query = query.WhereIf(model.TransportSize != null, a => a.TransportSize == model.TransportSize);

            int Count = query.Count();

            query = query.OrderByDescending(x => x.Id);

            if (skip != -1)
            {
                query = query.Skip((skip - 1) * take);
            }

            if (take != -1)
            {
                query = query.Take(take);
            }

            return(new Tuple <int, List <CarsTransportaionsFullDto> >(Count, await query.ToListAsync()));
        }
コード例 #2
0
 public async Task <IEnumerable <Product> > GetListByCategoryAsync(CategoryType categoryType)
 {
     return(await TableNoTracking
            .Where(x => x.CategoryType == categoryType)
            .ToListAsync()
            .ConfigureAwait(false));
 }
コード例 #3
0
        /// <summary>
        /// تنظیم نقش کاربر
        /// </summary>
        /// <param name="vm"></param>
        /// <returns></returns>
        public SweetAlertExtenstion SetRole(SetUserRoleViewModel vm)
        {
            var userRole = TableNoTracking.FirstOrDefault(a => a.UserId == vm.UserId);

            return(ResetRole());

            #region LocalMethod

            SweetAlertExtenstion ResetRole()
            {
                if (userRole == null)
                {
                    MapAdd(vm, false);
                }
                else
                {
                    Delete(userRole);
                    MapAdd(vm, false);
                }

                return(Save());
            }

            #endregion
        }
コード例 #4
0
        public List <MealPlan> GetAllMealPlans()
        {
            List <MealPlan> mealPlans = TableNoTracking.ToList();


            return(mealPlans);
        }
コード例 #5
0
        public bool HasAccess(int roleId, string controller, string action) /*=> true;*/
        {
            var roleName = _roleRepository.GetRoleNameByRoleId(roleId);

            if (roleName == ImportantNames.AdminNormalTitle())
            {
                return(true);
            }

            var userAccess = TableNoTracking.Where(a => a.RoleId == roleId).ToList();

            foreach (var item in userAccess)
            {
                if (item.Controller.ToUpper() == controller.ToUpper() + ImportantNames.ControllerName())
                {
                    var actions = item.Actions == null ? null : JsonConvert.DeserializeObject <List <string> >(item.Actions);

                    if (actions != null && actions.Contains(action))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
コード例 #6
0
        public async Task <ApiResult <List <TagDto> > > Get(CancellationToken cancellationToken)
        {
            var list = await _repositoryPostTag.TableNoTracking
                       .Where(a => !a.VersionStatus.Equals(2))
                       .GroupBy(a => a.TagId)
                       .Select(g => new { g.Key, Count = g.Count() })
                       .OrderByDescending(a => a.Count)
                       .Take(20)
                       .ToListAsync(cancellationToken);

            var result = new List <TagDto>();

            foreach (var value in list)
            {
                var res = await TableNoTracking
                          .Where(a => !a.VersionStatus.Equals(2) && a.Id.Equals(value.Key))
                          .ProjectTo <TagDto>(Mapper.ConfigurationProvider)
                          .SingleOrDefaultAsync(cancellationToken);

                if (res == null)
                {
                    continue;
                }

                result.Add(res);
            }

            return(result);
        }
コード例 #7
0
        public async Task <Tuple <int, List <TransportationTariffFullDto> > > GetAllTariff(TariffSearchViewModel model, int skip, int take)
        {
            var query = TableNoTracking.Include(a => a.CarTransport).Where(a => !a.IsDeleted).ProjectTo <TransportationTariffFullDto>();

            query = query.WhereIf(!string.IsNullOrEmpty(model.CarName), a => a.CarTransportCarName.Contains(model.CarName));
            query = query.WhereIf(model.TehranAreasFrom != null, a => a.TehranAreasFrom == model.TehranAreasFrom);
            query = query.WhereIf(model.TehranAreasTO != null, a => a.TehranAreasTO == model.TehranAreasTO);
            query = query.WhereIf(model.ProductSizeTo != null, a => a.ProductSizeTo == model.ProductSizeTo);
            query = query.WhereIf(model.ProductSizeFrom != null, a => a.ProductSizeFrom == model.ProductSizeFrom);
            query = query.WhereIf(model.Tariff != null, a => a.Tariff == model.Tariff);

            int Count = query.Count();

            query = query.OrderByDescending(x => x.Id);

            if (skip != -1)
            {
                query = query.Skip((skip - 1) * take);
            }

            if (take != -1)
            {
                query = query.Take(take);
            }

            return(new Tuple <int, List <TransportationTariffFullDto> >(Count, await query.ToListAsync()));
        }
コード例 #8
0
        public async Task <bool> LikePost(int userId, int id, float rate, CancellationToken cancellationToken)
        {
            if (rate < 0 || rate > 5)
            {
                throw new DataException("مقدار امتیاز نامعتبر است");
            }

            var isLike = await TableNoTracking
                         .AnyAsync(a => !a.VersionStatus.Equals(2) && a.UserId.Equals(userId) && a.PostId.Equals(id), cancellationToken);

            if (isLike)
            {
                throw new DataException("این مطلب قبلا امتیاز دهی شده است");
            }

            await AddAsync(new Like
            {
                PostId = id,
                Rate   = rate,
                UserId = userId,
                Time   = DateTimeOffset.Now
            }, cancellationToken);

            return(true);
        }
コード例 #9
0
        /// <summary>
        /// گرفتن اطلاعات ویژگی های محصول بر اساس شناسه محصول
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <List <ProductFeature> > GetFeaturesByProductId(int id)
        {
            var model = await TableNoTracking.Include(a => a.Feature)
                        .Where(a => a.ProductId == id).ToListAsync();

            return(model);
        }
コード例 #10
0
        public MealPlanPrice GetMealPlanPrice(int MealPlanId, DateTime dateTime)
        {
            MealPlanPrice mealPlanPrice = TableNoTracking.First(e =>
                                                                e.StartDate <= dateTime && e.EndDate >= dateTime && e.MealPlanId == MealPlanId);

            return(mealPlanPrice);
        }
コード例 #11
0
        /// <summary>
        /// تغییر وضعیت یک فاکتور
        /// در صورتی که فاکتور در در ایتدای کار باشد یعنی پرداخت شده باشد باید در وضعیت ثبت سفارش قرار بگیرد
        /// در غیر اینصورت باید به مرحله بعدی برود
        /// در صورتی که در مرحله تحویل باشد
        /// دیگر نمیتوان وضعیت آن را تغییر داد
        /// </summary>
        /// <param name="shopOrderId"></param>
        /// <returns></returns>
        public async Task <Tuple <SweetAlertExtenstion, ShopOrderStatusSSOT> > SendNextStatus(int shopOrderId)
        {
            var result = await TableNoTracking.Where(x => x.ShopOrderId == shopOrderId).OrderBy(x => x.Date).ToListAsync();

            // حالتی که فاکتور تازه ثبت شده است یعنی به عبارت دیگر پرداخت توسط مشتری انجام شده است
            if (result == null || result.Count == 0)
            {
                return(new Tuple <SweetAlertExtenstion, ShopOrderStatusSSOT>(await this.InsertAsync(new ShopOrderStatusInsertViewModel
                {
                    ShopOrderId = shopOrderId,
                    Status = ShopOrderStatusSSOT.Ordered
                }), ShopOrderStatusSSOT.Ordered));
            }

            var lastStatus = result.LastOrDefault().Status;

            if (lastStatus == ShopOrderStatusSSOT.Delivery)
            {
                return(new Tuple <SweetAlertExtenstion, ShopOrderStatusSSOT>(SweetAlertExtenstion.Error("فاکتور مورد نظر در مرحله تحویل است."), ShopOrderStatusSSOT.Nothing));
            }

            return(new Tuple <SweetAlertExtenstion, ShopOrderStatusSSOT>(await this.InsertAsync(new ShopOrderStatusInsertViewModel {
                ShopOrderId = shopOrderId,
                Status = lastStatus + 1
            }), lastStatus + 1));
        }
コード例 #12
0
        /// <summary>
        /// Find localized value
        /// </summary>
        /// <param name="entityName">Entity name</param>
        /// <param name="propertyName">Property name</param>
        /// <param name="entityId">Entity identifier</param>
        /// <param name="languageId">Language identifier</param>
        /// <param name="loadAllLocalizedProperties">true => load all records form cache | false => gradual loading</param>
        /// <returns>return localized value as string</returns>
        public virtual Task <string> GetLocalizedValueAsync(string entityName, string propertyName, int entityId,
                                                            int languageId, bool loadAllLocalizedProperties, CancellationToken cancellationToken = default)
        {
            if (languageId == 0)
            {
                throw new ArgumentOutOfRangeException(nameof(languageId), "Language ID should not be 0");
            }

            var key = string.Format(LocalizationCacheKeys.LocalizedPropertyCacheKey, entityName, entityId, propertyName, languageId);

            return(_cacheManagerString.GetAsync(key, LocalizationCacheKeys.LocalizedPropertyCacheRegion, async() =>
            {
                string localeValue;

                if (loadAllLocalizedProperties)
                {
                    //load all records (we know they are cached)
                    var source = await GetAllCachedAsync(cancellationToken);
                    localeValue = source
                                  .Where(p => p.LanguageId == languageId && p.EntityId == entityId && p.EntityName == entityName && p.PropertyName == propertyName)
                                  .Select(p => p.LocaleValue).FirstOrDefault();
                }
                else
                {
                    //gradual loading
                    localeValue = await TableNoTracking
                                  .Where(p => p.LanguageId == languageId && p.EntityId == entityId && p.EntityName == entityName && p.PropertyName == propertyName)
                                  .Select(p => p.LocaleValue).FirstOrDefaultAsync(cancellationToken);
                }

                //little hack here. nulls aren't cacheable so set it to ""
                return localeValue ?? "";
            }));
        }
コード例 #13
0
        public IEnumerable <MealPlanPrice> GetAllMealPlansPrices()
        {
            IEnumerable <MealPlanPrice> mealPlanPrices = TableNoTracking.ToArray();


            return(mealPlanPrices);
        }
コード例 #14
0
        public IEnumerable <RoomPrice> GetAllRoomPrices()
        {
            IEnumerable <RoomPrice> roomPrices = TableNoTracking.ToArray();


            return(roomPrices);
        }
コード例 #15
0
        public RoomPrice GetRoomPrice(RoomType roomType, DateTime dateTime)
        {
            RoomPrice roomPrice = TableNoTracking.FirstOrDefault(e =>
                                                                 e.StartDate <= dateTime && e.EndDate >= dateTime && e.RoomType == roomType);

            return(roomPrice);
        }
コード例 #16
0
        public IEnumerable <Room> GetAllRooms()
        {
            IEnumerable <Room> rooms = TableNoTracking.ToArray();


            return(rooms);
        }
コード例 #17
0
 public PagedList <Category> GetPaged(IPaged paged)
 {
     return(TableNoTracking
            .Where(p => p.ParentId == null)
            .Include(p => p.Categories)
            .PagedList(paged.PageIndex, paged.PageSize, paged.SearchByPropertyName, paged.SearchByText, paged.OrderByPropertyName, paged.OrderByDescending));
 }
コード例 #18
0
        public bool HasAccess(int role, IDictionary <string, string> path)
        {
            var roleName = _roleRepository.GetRoleNameByRoleId(role);

            if (roleName == ImportantNames.AdminNormalTitle())
            {
                return(true);
            }

            var userAccess = TableNoTracking.Include(a => a.Roles).Where(a => a.Roles.Id == role).ToList();



            foreach (var item in userAccess)
            {
                if (item.Controller.ToUpper() == path["controller"].ToUpper() + ImportantNames.ControllerName())
                {
                    var actions = item.Actions == null ? null : JsonConvert.DeserializeObject <List <string> >(item.Actions);

                    if (actions != null && actions.Contains(path["action"]))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
コード例 #19
0
        /// <summary>
        /// </summary>
        /// <param name="predicate"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public IPageList <UserSkill> GetPageList(Expression <Func <UserSkill, bool> > predicate, int pageIndex = 1,
                                                 int pageSize = 8)
        {
            var query = TableNoTracking.Where(predicate);
            var pages = query.Skip((pageIndex - 1) * pageSize).Take(pageSize);

            return(new PageList <UserSkill>(pages, pageIndex, pageSize));
        }
コード例 #20
0
        public async Task <IEnumerable <Reservation> > GetAll(CancellationToken cancellationToken, int range = 20)
        {
            List <Reservation> reservations = await TableNoTracking
                                              .Take(range)
                                              .ToListAsync(cancellationToken);

            return(reservations);
        }
コード例 #21
0
 private IQueryable <Person> GetWithIncludes()
 {
     return(TableNoTracking
            .Include(p => p.City)
            .Include(p => p.PhoneNumbers)
            .Include(p => p.Relations)
            .ThenInclude(r => r.RelatedPerson));
 }
コード例 #22
0
        public async Task <ApiResult <List <CategoryDto> > > GetAllByCatId(int id, CancellationToken cancellationToken)
        {
            var list = await TableNoTracking
                       .Where(a => !a.VersionStatus.Equals(2) && a.ParentCategoryId.Equals(id))
                       .ProjectTo <CategoryDto>(Mapper.ConfigurationProvider)
                       .ToListAsync(cancellationToken);

            return(list);
        }
コード例 #23
0
        public async Task <ApiResult <List <LikeDto> > > Get(int userId, CancellationToken cancellationToken)
        {
            var list = await TableNoTracking
                       .Where(a => !a.VersionStatus.Equals(2) && a.UserId.Equals(userId))
                       .ProjectTo <LikeDto>(Mapper.ConfigurationProvider)
                       .ToListAsync(cancellationToken);

            return(list);
        }
コード例 #24
0
        public async Task <bool> DisLikePost(int userId, int id, CancellationToken cancellationToken)
        {
            var result = await TableNoTracking
                         .SingleAsync(a => !a.VersionStatus.Equals(2) && a.UserId.Equals(userId) && a.PostId.Equals(id), cancellationToken);

            await DeleteAsync(result, cancellationToken);

            return(true);
        }
コード例 #25
0
        /// <summary>
        /// گرفتن کاربران شرایط خاص
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        public IQueryable <Users> GetUsers(FilterUserSSOT filter)
        {
            var model = TableNoTracking
                        .WhereIf(filter == FilterUserSSOT.AllUser, a => true)
                        .WhereIf(filter == FilterUserSSOT.ActiveUser, a => a.IsActive)
                        .WhereIf(filter == FilterUserSSOT.DeActiveUser, a => !a.IsActive);

            return(model);
        }
コード例 #26
0
        public List <ShopProduct> ShopProductByUserId(int userId)
        {
            var model = TableNoTracking
                        .Include(a => a.Product)
                        .Include(a => a.ProductPackage)
                        .Where(a => a.UserId == userId && a.IsFinaly == false && !a.IsFactorSubmited).ToList();

            return(model);
        }
コード例 #27
0
        /// <summary>
        /// زمانی دسترسی های نقشی تغییر پیدا میکند ابتدا باید تمامی نقش های آن پاک شود
        /// </summary>
        /// <param name="roleId"></param>
        public void RemoveAccessRole(int roleId)
        {
            var lstAccessRole = TableNoTracking.Where(a => a.RoleId == roleId);

            if (lstAccessRole.Any())
            {
                DeleteRange(lstAccessRole);
            }
        }
コード例 #28
0
 /// <summary>
 /// گرفتن تمام فرزندان یک پدر تا یک سطح
 /// </summary>
 /// <param name="parentId">شماره پدر</param>
 /// <param name="includeItSelf">خروجی مورد نظر شامل خود پدر هم بشود یا نه</param>
 /// <returns></returns>
 public async Task <List <ProductGroupDTO> > GetByParentId(int parentId, bool includeItSelf = false)
 {
     if (!includeItSelf)
     {
         return(await TableNoTracking.Where(x => x.ParentId == parentId).ProjectTo <ProductGroupDTO>().ToListAsync());
     }
     //شامل خودش
     return(await TableNoTracking.Where(x => x.ParentId == parentId || x.Id == parentId).ProjectTo <ProductGroupDTO>().ToListAsync());
 }
コード例 #29
0
        public async Task UpdateRemindedGallery(List <int> remindedGallery, int productId)
        {
            var productGallery = await TableNoTracking.Where(a => a.ProductId == productId &&
                                                             !remindedGallery.Contains(a.Id)).ToListAsync();

            DeletePic(productGallery.Select(x => x.Pic).ToList());

            await DeleteRangeAsync(productGallery);
        }
コード例 #30
0
        /// <summary>
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public IPageList <UserProject> GetPageListByUserId(long userId, int pageIndex = 1,
                                                           int pageSize = 8)
        {
            var query = TableNoTracking.Where(n => n.UserId == userId);

            query = query.OrderByDescending(n => n.StartDate);
            var list = query.ToPagedList(pageIndex, pageSize);

            return(list);
        }