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." }));
        }