public Shirt Create(ShirtCreateViewModel model) { var images = uploadImages(model.images, model.title); var document = new BsonDocument() { {"id", ObjectId.GenerateNewId() }, {"title", model.title }, {"handle", model.title.ToLower().Replace(' ', '-') }, {"type", model.series }, {"price", model.price }, {"stock", 4 }, {"description", model.description ?? model.series }, {"images", new BsonArray(images) }, {"variants", new BsonArray() { new BsonDocument() { {"XS", ObjectId.GenerateNewId() } }, new BsonDocument() { {"S", ObjectId.GenerateNewId() } }, new BsonDocument() { {"M", ObjectId.GenerateNewId() } }, new BsonDocument() { {"L", ObjectId.GenerateNewId() } }, new BsonDocument() { {"XL", ObjectId.GenerateNewId() } } } }, {"display", model.display } }; collection.InsertOneAsync(document).Wait(); return createShirtFromBson(document); }
public ActionResult Create(ShirtCreateViewModel model) { if (!Authenticated()) { return RedirectToAction("AdminLogin", "Auth"); } if (model.title == null || Globals.Shirts.Exists(x => x.Title.ToLower() == model.title.ToLower())) { return RedirectToAction("Admin", "Auth", new RouteValueDictionary( new { success = 0, message = "Create shirt failed: please provide a unique title." })); } var repo = new ShirtRepository(); try { var displayBool = bool.Parse(model.display); if (model.newseries != null) { model.series = model.newseries; var url = repo.uploadSeriesImage(model.series, model.sliderimage); url = displayBool ? url : null; Globals.Types.Add(model.series, url); } var shirt = repo.Create(model); Globals.Shirts.Add(shirt); Globals.Shirts.Sort((x, y) => x.Title.CompareTo(y.Title)); Globals.Types = Globals.Types.OrderBy(x => x.Key.Length).ToDictionary(x => x.Key, x => x.Value); } catch (Exception e) { return RedirectToAction("Admin", "Auth", new RouteValueDictionary( new { success = 0, message = "Create shirt failed: " + e.Message })); } return RedirectToAction("Admin", "Auth", new RouteValueDictionary( new { success = 1, message = model.title + " successfully added to database." })); }