public string Post(string token) { Context db = new Context(); BaseMethods bM = new BaseMethods(); var user = db.Users.FirstOrDefault(x => x.Token.Equals(token));//ищем пользователя if (user != null) { //ищем курьера и назначенный ему заказ var courier = db.Сouriers.FirstOrDefault(x => x.User.Id == user.Id); var order = db.Orders.FirstOrDefault(x => x.Id == courier.OrderId); order.Status = "Получен курьером"; //добавляем запись в блокчейн BlockChainManager.GenerateNextBlock(bM.Encrypt(JsonConvert.SerializeObject(order)), user.Id); db.SaveChanges(); return("Успешно"); } else { return(null); } }
/// <summary> /// Отмена заказа /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult Cancel(int id) { try { var order = Context.Orders .Include(x => x.OrderNoms) .Include(x => x.OrderNoms.Select(y => y.Nomenclature)) .Single(x => x.Id == id); foreach (var orderNom in order.OrderNoms) { var nomenclature = Context.Nomenclatures.Single(n => n.Id == orderNom.Nomenclature.Id); nomenclature.Count += orderNom.CountInOrder; Context.SaveChanges(); } order.Status = "Отменен"; var user = Context.Users.Single(x => x.Login.Equals(User.Identity.Name)); if (SmartCancel(order)) { BlockChainManager.GenerateNextBlock(bM.Encrypt(JsonConvert.SerializeObject(order)), user.Id); } Context.SaveChanges(); return(RedirectToAction("Index")); } catch { return(View()); } }
public ActionResult ChangeStatus(int id) { try { Context = new Context(); var order = Context.Orders.Single(x => x.Id == id); if (order.Status.Equals("Принят")) { order.Status = "Комплектация начата"; } else { order.Status = "Комплектация завершена"; } var user = Context.Users.Single(x => x.Login.Equals(User.Identity.Name)); if (SmartStatus(order)) { BlockChainManager.GenerateNextBlock(bM.Encrypt(JsonConvert.SerializeObject(order)), user.Id); } Context.SaveChanges(); return(RedirectToAction("Index")); } catch { return(RedirectToAction("Index")); } }
private static void printUsers(BlockChainManager bcm) { for (int i = 0; i < bcm.users.Count; i++) { Console.WriteLine($"User: {i + 1}"); } }
public ActionResult CreateOrder(CreateOrderViewModel model) { if (ModelState.IsValid) { var errorOrderNums = model.OrderNums.Where(o => (o.CountBuy > o.Count) || o.CountBuy < 0 || (o.IsBuy && o.CountBuy == 0)); if (errorOrderNums.Any()) { ModelState.AddModelError("", "Проверьте список заказа, вы указали недопустимое число товара"); return(View(model)); } ; if (model.OrderNums.Where(x => x.IsBuy).Count() == 0) { ModelState.AddModelError("", "Выберите товар"); return(View(model)); } var user = Context.Users.Single(u => u.Login.Equals(User.Identity.Name)); var order = Context.Orders.Add(new Order { Adres = model.Adress, UserId = user.Id, Status = "Принят" }); if (SmartCreate(order)) { BlockChainManager.GenerateNextBlock(JsonConvert.SerializeObject(order), user.Id); } foreach (var orderNumModel in model.OrderNums.Where(o => o.IsBuy && o.CountBuy > 0)) { var nomenclature = Context.Nomenclatures.Single(n => n.Name.Equals(orderNumModel.Name)); Context.OrderNoms.Add(new OrderNom { OrderId = order.Id, NomenclatureId = nomenclature.Id, CountInOrder = orderNumModel.CountBuy }); nomenclature.Count -= orderNumModel.CountBuy; Context.SaveChanges(); } return(RedirectToAction("Index")); } return(View(model)); }
private static void contentController() { BlockChainManager bcm = new BlockChainManager(10); while (true) { Console.Clear(); Console.WriteLine(drawMAIN()); choiceController(int.Parse(Console.ReadLine()), bcm); Console.ReadKey(); } }
private static void choiceController(int ID, BlockChainManager bcm) { switch (ID) { case 1: { bcm.addData(1); break; } case 2: { bcm.addData(2); break; } case 3: { List <int> results = bcm.getResults(); Console.WriteLine(extractResults(results)); break; } case 4: { printUsers(bcm); Console.WriteLine("Select user: "******"\n" + bcm.users[userID].ToString()); int blockID = int.Parse(Console.ReadLine()) - 1; Block block = bcm.users[userID].getBlockByID(blockID); block.data = 420; break; } default: { Environment.Exit(0); break; } } }
public ActionResult AssignCourierOrder(WSR_NPI.DataBase.Models.Сourier model) { if (ModelState.IsValid) { var c = Context.Сouriers.Single(x => x.Id == model.Id); c.Status = "Доставляет"; c.OrderId = model.OrderId; var order = Context.Orders.Single(x => x.Id == model.OrderId); order.Status = "Ожидает курьера"; var user = Context.Users.Single(x => x.Login.Equals(User.Identity.Name)); if (SmartCourier(order, c)) { BlockChainManager.GenerateNextBlock(bM.Encrypt(JsonConvert.SerializeObject(order)), user.Id); } Context.SaveChanges(); return(RedirectToAction("Index")); } return(PartialView("AssignCourierOrder", model)); }
public string Post(string token) { Context db = new Context(); var user = db.Users.FirstOrDefault(x => x.Token.Equals(token)); //ищем пользователя if (user != null) { //освобождаем курьера и закрываем заказ var courier = db.Сouriers.FirstOrDefault(x => x.User.Id == user.Id); courier.Status = "Свободен"; var order = db.Orders.FirstOrDefault(x => x.Id == courier.OrderId); order.Status = "Доставлен"; //добавляем запись в блокчейн BlockChainManager.GenerateNextBlock(JsonConvert.SerializeObject(order), user.Id); courier.OrderId = null; db.SaveChanges(); return("Успешно"); } else { return(null); } }
public ActionResult CreateOrder(CreateOrderViewModel model) { if (ModelState.IsValid) { var errorOrderNums = model.OrderNums.Where(o => (o.CountBuy > o.Count) || o.CountBuy < 0 || (o.IsBuy && o.CountBuy == 0)); if (errorOrderNums.Any()) { ModelState.AddModelError("", "Проверьте список заказа, вы указали недопустимое число товара"); return(View(model)); } ; if (model.OrderNums.Where(x => x.IsBuy).Count() == 0) { ModelState.AddModelError("", "Выберите товар"); return(View(model)); } var user = Context.Users.Single(u => u.Login.Equals(User.Identity.Name)); var order = Context.Orders.Add(new Order { Adres = model.Adress, UserId = user.Id, Status = "Принят" }); if (SmartCreate(order)) { var orderData = bM.Encrypt(JsonConvert.SerializeObject(order)); ScriptEngine engine = Python.CreateEngine(); ScriptScope scope = engine.CreateScope(); scope.SetVariable("msg", orderData); engine.ExecuteFile(Server.MapPath("~/Py/keys.py"), scope); dynamic sign = scope.GetVariable("sign"); dynamic pubKey = scope.GetVariable("pubKey"); BlockChainManager.Path = Server.MapPath("~/Py/varify.py"); BlockChainManager.Sign = sign; BlockChainManager.PubKey = pubKey; BlockChainManager.Need = true; BlockChainManager.GenerateNextBlock(orderData, user.Id); } foreach (var orderNumModel in model.OrderNums.Where(o => o.IsBuy && o.CountBuy > 0)) { var nomenclature = Context.Nomenclatures.Single(n => n.Name.Equals(orderNumModel.Name)); Context.OrderNoms.Add(new OrderNom { OrderId = order.Id, NomenclatureId = nomenclature.Id, CountInOrder = orderNumModel.CountBuy }); nomenclature.Count -= orderNumModel.CountBuy; Context.SaveChanges(); } return(RedirectToAction("Index")); } return(View(model)); }