public ActionResult Register() { var model = new RestaurantRegisterViewModel { Counties = db.Counties }; return(View(model)); }
public RestaurantRegisterViewModel InitVM(RestaurantRegisterViewModel vm) { int _id = 0; if (vm.R_County != null) { _id = db.Counties.Where(x => x.CountyName == vm.R_County).SingleOrDefault().Id; } var registVM = new RestaurantRegisterViewModel { R_Password = null, checkR_Password = null, Counties = db.Counties, Areas = (_id == 0 ? null : addressService.GetAllAreas(_id)) }; return(registVM); }
public ActionResult Register(RestaurantRegisterViewModel registerMember) { //var errors = ModelState.Values.SelectMany(v => v.Errors); if (ModelState.IsValid) { if (!memberService.IdIsExist(registerMember.Id)) { ModelState.AddModelError("Id", "無效之統一編號,請重新確認"); var registVM = InitVM(registerMember); return(View(registVM)); } if (memberService.CheckId(registerMember.Id)) { var area = db.Counties.Where(x => x.CountyName == registerMember.R_County).Select(x => new { Id = x.Id }); ModelState.AddModelError("Id", "該統編已註冊過,請勿重複註冊"); var registVM = InitVM(registerMember); return(View(registVM)); } var checkAccount = memberService.AccountCheck(registerMember.R_Account); if (checkAccount == false) { var area = db.Counties.Where(x => x.CountyName == registerMember.R_County).Select(x => new { Id = x.Id }); ModelState.AddModelError("R_Account", "該帳號已被註冊,請重新嘗試"); var registVM = InitVM(registerMember); return(View(registVM)); } string AuthCode = mailService.GetValidateCode(); //get random code double lat = 0.0, lng = 0.0; #region get lat and lon try { var address = registerMember.R_County + registerMember.R_Area + registerMember.DetailAddr; var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}", address); var request = WebRequest.Create(requestUri); var response = request.GetResponse(); var xdoc = XDocument.Load(response.GetResponseStream()); var result = xdoc.Element("GeocodeResponse").Element("result"); var locationElement = result.Element("geometry").Element("location"); lat = float.Parse(locationElement.Element("lat").Value); lng = float.Parse(locationElement.Element("lng").Value); } catch (Exception e) { ModelState.AddModelError("DetailAddr", "地址剖析失敗,請確認地址是否有效。"); var registVM = InitVM(registerMember); return(View(registVM)); throw e; } #endregion var localTime = DateTime.Now; TimeZoneInfo destTz = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time"); var registTime = TimeZoneInfo.ConvertTime(localTime, TimeZoneInfo.Local, destTz); Restaurant _newMember = new Restaurant() { Id = registerMember.Id, R_Account = registerMember.R_Account, R_Password = registerMember.R_Password, R_PhoneNum = registerMember.R_PhoneNum, R_Name = registerMember.R_Name, Email = registerMember.Email, SignUpTime = registTime, R_County = registerMember.R_County, R_Area = registerMember.R_Area, R_DetailAddress = registerMember.DetailAddr, AuthCode = AuthCode, StartTime = registerMember.StartTime, CloseTime = registerMember.CloseTime, StatusFlg = false, isCheck = false, Lat = lat, Lng = lng, WaitListSwitch = false }; string TempMail = System.IO.File.ReadAllText( Server.MapPath("~/Views/Shared/RegisterEmailTemplate.html")); UriBuilder ValidateUrl = new UriBuilder(Request.Url) { Path = Url.Action("EmailValidate", "Restaurant" , new { UserName = registerMember.Id, AuthCode = AuthCode }) }; memberService.Register(_newMember); //Write user data to validate mail sample string MailBody = mailService.GetRegisterMailBody(TempMail, registerMember.R_Name, ValidateUrl.ToString().Replace("%3F", "?")); mailService.SendRegisterMail(MailBody, registerMember.Email); TempData["RegisterState"] = "註冊成功,請到個人信箱驗證Email地址"; return(View("RegisterResult")); } else { var registVM = InitVM(registerMember); return(View(registVM)); } }
public JsonResult AccountCheck(RestaurantRegisterViewModel registerMember) { return(Json(memberService.AccountCheck(registerMember.R_Account), JsonRequestBehavior.AllowGet)); }