public JsonResult Save(CategoryFeatureViewModel model)
        {
            var currentUser = GetAuthenticatedUser();

            try
            {
                if (string.IsNullOrEmpty(model.title))
                {
                    return(Error("وارد کردن نام ویژگی های دسته بندی اجباری است."));
                }

                if (model.id != null && model.id > 0)
                {
                    var entity = _context.CategoryFeature.Single(x => x.StatusId != CategoryFeatureStatus.Deleted.Id && x.Id == model.id);
                    entity.CategoryId   = model.categoryId;
                    entity.Title        = model.title.ToStandardPersian();
                    entity.TypeId       = model.typeId;
                    entity.StatusId     = model.statusId;
                    entity.ModifyUserId = currentUser.id;
                    entity.ModifyDate   = GetDatetime();
                    entity.ModifyIp     = GetCurrentIp();

                    _context.SaveChanges();

                    return(Success("اطلاعات ویژگی های دسته بندی با موفقیت ویرایش شد."));
                }
                else
                {
                    var entity = new CategoryFeature()
                    {
                        CategoryId   = model.categoryId,
                        Title        = model.title.ToStandardPersian(),
                        TypeId       = model.typeId,
                        StatusId     = model.statusId,
                        CreateUserId = currentUser.id,
                        ModifyUserId = currentUser.id,
                        CreateDate   = GetDatetime(),
                        ModifyDate   = GetDatetime(),
                        CreateIp     = GetCurrentIp(),
                        ModifyIp     = GetCurrentIp()
                    };

                    _context.CategoryFeature.Add(entity);
                    _context.SaveChanges();

                    return(Success("ویژگی های دسته بندی با موفقیت ایجاد شد."));
                }
            }
            catch (Exception ex)
            {
                return(ServerError(ex));
            }
        }
        public async Task <CategoryFeature> DeleteCategoryFeature(int categoryFeatureId)
        {
            using (var context = new ApplicationContext())
            {
                CategoryFeature dbEntry = await context.CategoryFeatures.FindAsync(categoryFeatureId);

                if (dbEntry != null)
                {
                    context.CategoryFeatures.Remove(dbEntry);
                    await context.SaveChangesAsync();
                }
                return(dbEntry);
            }
        }
Esempio n. 3
0
        //Get Feature
        /// <summary>
        /// Get category for feature
        /// </summary>
        /// <returns></returns>
        private List <CategoryFeature> GetCategoryFeature()
        {
            var temp = _dbBCDHX.Categories.Select(x => x).Take(7).ToList();
            List <CategoryFeature> g = new List <CategoryFeature>();

            foreach (var item in temp)
            {
                CategoryFeature t = new CategoryFeature
                {
                    CategoryID   = item.ID_Category,
                    CategoryName = item.Name_Category
                };
                g.Add(t);
            }
            return(g);
        }
        public List <CategoryFeature> DeleteCategoryFeatures(List <CategoryFeature> categoryFeaturesToDelete)
        {
            var removedCategoryFeature = new List <CategoryFeature>();

            using (var context = new ApplicationContext())
            {
                foreach (var feature in categoryFeaturesToDelete)
                {
                    CategoryFeature dbEntry = context.CategoryFeatures.Find(feature.Id);
                    if (dbEntry != null)
                    {
                        context.CategoryFeatures.Remove(dbEntry);
                        context.SaveChanges();
                        removedCategoryFeature.Add(dbEntry);
                    }
                }
            }
            return(removedCategoryFeature);
        }
 public void SaveCategoryFeature(CategoryFeature categoryFeature)
 {
     using (var context = new ApplicationContext())
     {
         if (categoryFeature.Id == 0)
         {
             context.CategoryFeatures.Add(categoryFeature);
         }
         else
         {
             CategoryFeature dbEntry = context.CategoryFeatures.Find(categoryFeature.Id);
             if (dbEntry != null)
             {
                 dbEntry.Id         = categoryFeature.Id;
                 dbEntry.CategoryId = categoryFeature.CategoryId;
                 dbEntry.FeatureId  = categoryFeature.FeatureId;
             }
         }
         context.SaveChanges();
     }
 }
Esempio n. 6
0
        public ActionResult EditCategories(
            EditCategoriesViewModel model,
            HttpPostedFileBase categoryImg = null)
        {
            if (categoryImg != null)
            {
                model.Category.ImageMimeType = categoryImg.ContentType;
                model.Category.ImageData     = new byte[categoryImg.ContentLength];
                categoryImg.InputStream.Read(
                    model.Category.ImageData, 0, categoryImg.ContentLength);
            }
            categoryRepo.SaveCategory(model.Category);

            // saving category features
            if (model.CategoryFeaturesIds?.Count > 0)
            {
                // clear features if this category
                var categoryFeatures = categoryFeatureRepo.CategoryFeatures
                                       .Where(cf => cf.CategoryId == model.Category.Id)
                                       .ToList();
                if (categoryFeatures.Any())
                {
                    categoryFeatureRepo.DeleteCategoryFeatures(categoryFeatures);
                }

                foreach (var featureId in model.CategoryFeaturesIds)
                {
                    var catFeature = new CategoryFeature
                    {
                        CategoryId = model.Category.Id,
                        FeatureId  = featureId
                    };
                    categoryFeatureRepo.SaveCategoryFeature(catFeature);
                }
            }

            return(RedirectToAction("IndexCategories"));
        }
        public void Run()
        {
            using (AliRecommend2DataEntities db = new AliRecommend2DataEntities())
            {
                ((IObjectContextAdapter)db).ObjectContext.CommandTimeout = 600;
                long startTime = DateTime.Now.Ticks;
                var  data      = db.T_UserAction.Where(d => d.actiondate >= StartDate && d.actiondate < PredictDate).ToList();
                Console.WriteLine("数据库数据读取完毕,正在进行处理中...");
                FeatureCollection features = new FeatureCollection();

                features.UpdateOnlineItemSet(db);
                Console.WriteLine("正在读取正例数据...");
                features.UpdatePositiveSet(db, PredictDate);

                var categories = data.GroupBy(d => d.category);
                Console.WriteLine("正在添加类别特征...");
                foreach (var categoryData in categories)
                {
                    CategoryFeature categoryFeature = new CategoryFeature(categoryData.Key, PredictDate);
                    categoryFeature.Update(categoryData);
                    features.AddCategoryFeature(categoryFeature);
                }


                var items = data.GroupBy(d => d.itemid);
                Console.WriteLine("正在添加商品特征...");
                //按商品分组,itemData是每个商品的所有记录
                foreach (var itemData in items)
                {
                    ItemFeature itemFeature = new ItemFeature(itemData.Key, PredictDate);
                    itemFeature.Update(itemData);
                    itemFeature.IsOnline = features.CheckIsOnline(itemFeature.Id);
                    //向ItemFeature绑定CategoryFeature
                    itemFeature.CategoryFeature = features.CategoryFeatureDict[itemFeature.CategoryId];
                    features.AddItemFeature(itemFeature);
                }

                var users = data.GroupBy(d => d.userid);
                Console.WriteLine("正在添加用户相关特征...");
                foreach (var userData in users)
                {
                    UserFeature userFeature = new UserFeature(userData.Key, PredictDate);
                    userFeature.Update(userData);
                    features.AddUserFeature(userFeature);

                    var userCategories = userData.GroupBy(d => d.category);
                    foreach (var userCategoryData in userCategories)
                    {
                        UserCategoryFeature userCategoryFeature = new UserCategoryFeature(userCategoryData.Key, PredictDate);
                        userCategoryFeature.Update(userCategoryData);
                        userFeature.UserCategorieDict.Add(userCategoryFeature.CategoryId, userCategoryFeature);
                        features.AddUserCategoryFeature(userCategoryFeature);
                    }

                    var userItems = userData.GroupBy(d => d.itemid);
                    foreach (var userItemData in userItems)
                    {
                        UserItemFeature userItemFeature = new UserItemFeature(userFeature, userItemData.Key);
                        userItemFeature.Update(userItemData);
                        //是否是正例
                        userItemFeature.Label = features.CheckIsPositive(userItemFeature.UserId, userItemFeature.ItemId);
                        //向UserItemFeature 绑定ItemFeature
                        userItemFeature.ItemFeature = features.ItemFeatureDict[userItemFeature.ItemId];
                        //向UserItemFeature绑定UserCategoryFeature
                        userItemFeature.UserCategoryFeature = userItemFeature.UserFeature.UserCategorieDict[userItemFeature.ItemFeature.CategoryId];
                        features.AddUserItemFeature(userItemFeature);
                    }
                }
                if (Global.Normalized)
                {
                    features.Normalize();
                }
                string dirname = Global.GetDirectoryName();
                if (Directory.Exists(dirname) == false)
                {
                    Directory.CreateDirectory(dirname);
                }
                string filename = dirname + Global.GetFileName(PredictDate);
                features.Write(filename);

                Console.WriteLine("运行完毕,耗时{0}s", (DateTime.Now.Ticks - startTime) / 10000000);
                Console.WriteLine("{0} 输出完毕。", filename);
            }
            //Console.ReadKey();
        }
        public IHttpActionResult PutCategory(int id, Category new_category)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != new_category.CatID)
            {
                return(BadRequest());
            }

            var existingCategory = db.Categories.Where(c => c.CatID == new_category.CatID).Include(cf => cf.CategoryFeatures).SingleOrDefault();

            if (existingCategory != null)
            {
                // Update Category
                db.Entry(existingCategory).CurrentValues.SetValues(new_category);
                // Delete CategoryFeatures
                foreach (var existingCatFeature in existingCategory.CategoryFeatures.ToList())
                {
                    if (!new_category.CategoryFeatures.Any(cf => cf.FeatureID == existingCatFeature.FeatureID))
                    {
                        db.CategoryFeatures.Remove(existingCatFeature);
                    }
                }
                // Update and Insert CategoryFeatures
                foreach (var nCatFeat in new_category.CategoryFeatures)
                {
                    var existingCategoryFeature = existingCategory.CategoryFeatures.Where(cf => cf.FeatureID == nCatFeat.FeatureID).SingleOrDefault();
                    if (existingCategoryFeature != null)
                    {
                        nCatFeat.CatID = existingCategory.CatID;
                        // Update catFeature
                        db.Entry(existingCategoryFeature).CurrentValues.SetValues(nCatFeat);
                    }
                    else
                    {
                        // Insert CatFeature
                        var newCatFeature = new CategoryFeature
                        {
                            FeatureID = nCatFeat.FeatureID
                                        //...
                        };
                        existingCategory.CategoryFeatures.Add(newCatFeature);
                    }
                }
            }

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CategoryExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }