Exemplo n.º 1
0
        async public Task <IActionResult> CreateItem(string categoryslug, CreateItemViewModel model)
        {
            SetPageContent("createItem");
            if (ModelState.IsValid)
            {
                var questions = _projectEngine.GetCategoryQuestions(categoryslug);

                foreach (var question in questions)
                {
                    if (question.CategoryQuestionTypeId == 3)
                    {
                        var values = HttpContext.Request.Form[Converter.String.ToValidControlId(question.Label)];

                        question.Value = string.Join("|", values);
                    }
                    else
                    {
                        question.Value = HttpContext.Request.Form[Converter.String.ToValidControlId(question.Label)];
                    }
                }

                var title       = HttpContext.Request.Form["Title"];
                var description = HttpContext.Request.Form["Description"];
                var provinceId  = HttpContext.Request.Form["ProvinceId"];
                var districtId  = HttpContext.Request.Form["DistrictId"];
                var whenTypeId  = HttpContext.Request.Form["WhenTypeId"];
                var whenDateId  = HttpContext.Request.Form["WhenDateId"];
                var whenTimeId  = HttpContext.Request.Form["WhenTimeId"];
                var price       = HttpContext.Request.Form["Price"];

                decimal decimalPrice = 0;
                decimal?PriceValue   = null;
                if (decimal.TryParse(price, out decimalPrice))
                {
                    PriceValue = decimalPrice;
                }
                if (model.UnknownPrice)
                {
                    PriceValue = null;
                }

                var galleryImages = Request.Form.Files.GetFiles("galleryImage");

                var result = _projectEngine.CreateItem(_userManager.GetUserId(User), categoryslug, title, description, provinceId, districtId,
                                                       whenTypeId, whenDateId, whenTimeId, questions, PriceValue, galleryImages);

                switch (result.Type)
                {
                case TransactionType.Error:

                    ModelState.AddModelError("", result.Message);
                    return(View(await getCreateItemViewModel(categoryslug)));

                case TransactionType.Success:
                    return(RedirectToRoute("projects"));
                }
            }

            SetValidationErrorMessage();

            return(View(await getCreateItemViewModel(categoryslug)));
        }