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); } }
//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(); } }
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)); }