public ActionResult OrderPaintCard(string brand = "")
        {
            var viewModel = new OrderPaintCardViewModel
            {
                SelectedBrand = brand
            };

            var loggedInUser = LoggedInUser();

            if (loggedInUser != null)
            {
                var person = _personService.GetByUserAccount(loggedInUser).FirstOrDefault();
                _mappingEngine.Map(person, viewModel.Person);

                var address = _addressService.GetAddresses(loggedInUser).FirstOrDefault();
                _mappingEngine.Map(address, viewModel.Address);
            }

            return(PartialView(viewModel));
        }
        public ActionResult OrderPaintCard(OrderPaintCardViewModel viewModel, string returnUrl)
        {
            if (string.IsNullOrEmpty(returnUrl) && string.IsNullOrEmpty(viewModel.Person.FirstName))
            {
                var loggedInUser = LoggedInUser();
                if (loggedInUser != null)
                {
                    var person = _personService.GetByUserAccount(loggedInUser).FirstOrDefault();
                    _mappingEngine.Map(person, viewModel.Person);

                    var address = _addressService.GetAddresses(loggedInUser).FirstOrDefault();
                    _mappingEngine.Map(address, viewModel.Address);
                }

                return(PartialView(viewModel));
            }

            viewModel.Person.Title     = viewModel.Address.Title;
            viewModel.Person.FirstName = viewModel.Address.FirstName;
            viewModel.Person.LastName  = viewModel.Address.LastName;

            ModelState.Clear();
            TryValidateModel(viewModel);

            if (ModelState.IsValid)
            {
                var person  = _mappingEngine.Map <Person>(viewModel.Person);
                var address = _mappingEngine.Map <Address>(viewModel.Address);

                var enquiryType = _enquiryTypeService.Get(new { FormID = "OrderPaintCard" }).FirstOrDefault();

                var enquiry = new Enquiry
                {
                    UserAgent     = Request.UserAgent,
                    FormXML       = _serializer.GetXml(viewModel),
                    EnquiryTypeID = enquiryType.Id,
                    SiteId        = ColonyContext.CurrentSite.Id,
                    Title         =
                        enquiryType.DynamicTitle.Replace("$FirstName", address.FirstName)
                        .Replace("$LastName", address.LastName)
                };

                enquiry = _enquiryService.Create(enquiry);

                var enquiryRecipients = _enquiryRecipientService.Get(new { SiteID = ColonyContext.CurrentSite.Id, EnquiryTypeID = enquiryType.Id });

                if (enquiryRecipients != null && enquiryRecipients.Any())
                {
                    // send to admin
                    var emailAddresses = string.Join(";", enquiryRecipients.Select(x => x.EmailAddress));

                    _mailerService.Send(emailAddresses, ColonyContext.CurrentSite.DefaultSenderEmail,
                                        string.Format("{0} - Paint Card Request", ColonyContext.CurrentSite.Name),
                                        "PaintCardRequestAdminEmail", viewModel);
                }

                if (Request.IsAjaxRequest())
                {
                    return(Json(new { success = enquiry != null && enquiry.Id != 0 }));
                }

                return(Redirect(returnUrl));
            }

            return(PartialView(viewModel));
        }