public ActionResult PassVerification(FormCollection form) { if (Session["AdminID"] != null) { ViewBag.AdminLogined = true; string userName = form["userName"]; string modelId = form["modelId"]; decimal printPrice = Convert.ToDecimal(form["printPrice"]); int downloadTickets = Convert.ToInt32(form["downloadTickets"]); string newTags = form["modelTags"]; string[] Tags = newTags.Split(' '); var user = db.Users.Where(n => n.UserName == userName).FirstOrDefault(); user.UserDownloadTickets += downloadTickets; db.Entry(user).State = EntityState.Modified; db.SaveChanges(); var model = db.ModelLibrary.Where(n => n.ModelID == modelId).FirstOrDefault(); foreach (var tag in Tags) { model.ModelKeyWords += tag + ","; } model.ModelState = true; model.ModelPrintPrice = printPrice; db.Entry(model).State = EntityState.Modified; db.SaveChanges(); //modify part model's print price var priceString = form["partPrintPrice"]; var filesNameString = form["fileName"]; if (priceString != null && filesNameString != null) { var fileNames = filesNameString.Split(','); var prices = priceString.Split(','); var modelDetails = db.ModelPartsDetail.Where(n => n.ModelID == modelId); for (int i = 0; i < fileNames.Count(); i++) { foreach (var item in modelDetails) { if (item.ModelFileName == fileNames[i]) { item.ModelPartPrintPrice = Convert.ToDecimal(prices[i]); break; } } } db.SaveChanges(); } return(RedirectToAction("Verification")); } else { return(RedirectToAction("Index")); } }
//model details public ActionResult Detail(string modelId, string partName) { //judge if user is logined if (Session["UserID"] != null) { ViewBag.UserId = Session["UserID"]; int userId = Convert.ToInt32(Session["UserID"].ToString()); var user = db.Users.Find(userId); ViewBag.UserName = user.UserName; } var model = db.ModelLibrary.Where(n => (n.ModelID == modelId)).FirstOrDefault(); //update scan number model.ModelScanNumbers++; db.Entry(model).State = EntityState.Modified; db.SaveChanges(); Detail detail = new Detail(); //select popular model var popularModel = db.ModelLibrary.OrderByDescending(n => (n.ModelDownloadNumbers)).Take(3); foreach (var pModel in popularModel) { detail.PopularModels.Add(pModel); } if (partName == null) { //detail.DetailModelImagePath.Add(path); detail.DetailModel = model; detail.DetailModelID = modelId; var modelDetails = db.ModelPartsDetail.Where(n => n.ModelID == modelId); foreach (var item in modelDetails) { detail.DetailModelParts.Add(item); } if (model.ModelPartCounts < 2) { //calculate the optional ratio var modelDetail = db.ModelPartsDetail.Where(n => (n.ModelID == modelId) && (n.ModelFileName == model.ModelFileNames)).FirstOrDefault(); for (decimal x = modelDetail.Width / 2, y = modelDetail.Length / 2, z = modelDetail.Height / 2, i = 1; x >= 30 && x <= 300 && y >= 30 && y <= 300 && z >= 20 && z <= 550; x /= 2, y /= 2, z /= 2, i += 1) { detail.DetailModelRatio.Add(1 / (2 * i)); detail.DetailModelRatio.Sort(); } detail.DetailModelRatio.Add(1); for (decimal x = modelDetail.Width * 2, y = modelDetail.Length * 2, z = modelDetail.Height * 2, i = 1; x >= 30 && x <= 300 && y >= 30 && y <= 300 && z >= 20 && z <= 550; x *= 2, y *= 2, z *= 2, i += 1) { detail.DetailModelRatio.Add(2 * i); } } //add evaluation and trade records var orderDetails = db.OrderDetail.Where(n => n.ModelID == modelId).OrderByDescending(n => n.OrderID).ToList(); for (int i = 0; i < orderDetails.Count(); i++) { var orderId = orderDetails[i].OrderID; var order = db.Orders.Where(n => n.OrderID == orderId).FirstOrDefault(); var user = db.Users.Where(n => n.UserID == order.UserID).FirstOrDefault(); if (orderDetails.ElementAt(i).Evaluation != "") { var evaluation = new TradeEvaluation(); evaluation.Content = orderDetails[i].Evaluation; evaluation.EvatuationTime = DateTime.Now; evaluation.Consumer = user.UserName; detail.ModelTradeEvaluations.Add(evaluation); } var tradeRecord = new TradeRecord(); tradeRecord.Consumer = user.UserName; tradeRecord.Sum = order.Sums; tradeRecord.BuyTime = order.OrderTime; detail.ModelTradeRecords.Add(tradeRecord); } } else { //detail.DetailModelImagePath.Add(path); detail.IsPart = true; detail.DetailModel = model; detail.DetailModelID = modelId; //calculate the optional ratio var modelDetail = db.ModelPartsDetail.Where(n => (n.ModelID == modelId) && (n.ModelFileName == partName)).FirstOrDefault(); detail.DetailModelParts.Add(modelDetail); for (decimal x = modelDetail.Width / 2, y = modelDetail.Length / 2, z = modelDetail.Height / 2, i = 1; x >= 30 && x <= 300 && y >= 30 && y <= 300 && z >= 20 && z <= 550; x /= 2, y /= 2, z /= 2, i += 1) { detail.DetailModelRatio.Add(1 / (2 * i)); detail.DetailModelRatio.Sort(); } detail.DetailModelRatio.Add(1); for (decimal x = modelDetail.Width * 2, y = modelDetail.Length * 2, z = modelDetail.Height * 2, i = 1; x >= 30 && x <= 300 && y >= 30 && y <= 300 && z >= 20 && z <= 550; x *= 2, y *= 2, z *= 2, i += 1) { detail.DetailModelRatio.Add(2 * i); } } return(View(detail)); }