Exemplo n.º 1
0
        /// <summary>
        /// GET: /Transaction/Checkout/{id}
        /// </summary>
        /// <param name="id">Item id</param>
        /// <param name="referenceId">Reference Number for external applications</param>
        /// <param name="coupon"></param>
        /// <param name="password"> </param>
        /// <param name="agribusinessExtraParams"></param>
        /// <returns></returns>
        public ActionResult Checkout(int id, string referenceId, string coupon, string password, AgribusinessExtraParams agribusinessExtraParams = null)
        {
            var item = Repository.OfType<Item>().GetNullableById(id);

            if (item == null)
            {
                Message = NotificationMessages.STR_ObjectNotFound.Replace(NotificationMessages.ObjectType, "Item");
                return this.RedirectToAction<HomeController>(a => a.Index());
            }

            var viewModel = ItemDetailViewModel.Create(Repository, _openIdUserRepository, item, CurrentUser.Identity.Name, referenceId, coupon, password);
            viewModel.Quantity = 1;
            viewModel.Answers = PopulateItemTransactionAnswer(viewModel.OpenIdUser, item.QuestionSets); // populate the open id stuff for transaction answer contact information
            if(!viewModel.Answers.Any())
            {
                viewModel.Answers = PopulateItemTransactionAnswer(agribusinessExtraParams, item.QuestionSets);
            }
            viewModel.TotalAmountToRedisplay = viewModel.Quantity*item.CostPerItem;
            viewModel.CouponAmountToDisplay = 0.0m; //They have not entered a coupon yet
            viewModel.CouponTotalDiscountToDisplay = 0.0m;
            return View(viewModel);
        }
Exemplo n.º 2
0
        /// <summary>
        /// This one is used for Agribusiness to pass these values.
        /// </summary>
        /// <param name="agribusinessExtraParams"></param>
        /// <param name="questionSets"></param>
        /// <returns></returns>
        private IEnumerable<ItemTransactionAnswer> PopulateItemTransactionAnswer(AgribusinessExtraParams agribusinessExtraParams, ICollection<ItemQuestionSet> questionSets)
        {
            var answers = new List<ItemTransactionAnswer>();

            // if anything is null, just return no answers
            if(agribusinessExtraParams == null || questionSets == null)
                return answers;

            // find the contact information question set
            var questionSet = questionSets.Where(a => a.QuestionSet.Name == StaticValues.QuestionSet_ContactInformation).Select(a => a.QuestionSet).FirstOrDefault();

            // if it exists, fill in the questions
            if(questionSet != null)
            {
                var questionAnswer = new Dictionary<string, string>();
                questionAnswer.Add(StaticValues.Question_FirstName, agribusinessExtraParams.FN);
                questionAnswer.Add(StaticValues.Question_LastName, agribusinessExtraParams.LN);
                questionAnswer.Add(StaticValues.Question_Title, agribusinessExtraParams.Title);
                questionAnswer.Add(StaticValues.Question_StreetAddress, agribusinessExtraParams.Address);
                questionAnswer.Add(StaticValues.Question_AddressLine2, agribusinessExtraParams.Address2);
                questionAnswer.Add(StaticValues.Question_City, agribusinessExtraParams.City);
                questionAnswer.Add(StaticValues.Question_State, agribusinessExtraParams.State != null ? agribusinessExtraParams.State.Trim().ToUpper() : string.Empty);
                questionAnswer.Add(StaticValues.Question_Zip, agribusinessExtraParams.Zip);
                questionAnswer.Add(StaticValues.Question_PhoneNumber, agribusinessExtraParams.Phone != null ? agribusinessExtraParams.Phone.Replace('.', '-') : string.Empty);
                questionAnswer.Add(StaticValues.Question_Email, agribusinessExtraParams.Email);
                foreach(var question in questionSet.Questions)
                {
                    //If it doesn't find the question, it will throw an exception. (a good thing.)
                    var ans = questionAnswer[question.Name];
                    // create the answer object
                    var answer = new ItemTransactionAnswer()
                    {
                        Answer = ans,
                        QuestionId = question.Id,
                        QuestionSetId = question.QuestionSet.Id,
                        Transaction = true
                    };

                    answers.Add(answer);
                }

            }

            return answers;
        }