public ActionResult AddToCart(string id) { DAL.RestaurantMenu restaurantMenu = menuModel.find(int.Parse(DataSecurityTripleDES.GetPlainText(id))); RestaurantMenuCartDTO thisMenuDTO = EntityDTOHelper.GetEntityDTO <RestaurantMenu, RestaurantMenuCartDTO>(restaurantMenu); DAL.Restaurant restaurant = db.Restaurant.Find(restaurantMenu.OwnerId); thisMenuDTO.ServiceOwnerName = restaurant.Name; thisMenuDTO.ServiceOwnerId = DataSecurityTripleDES.GetEncryptedText(restaurant.Id); thisMenuDTO.ServiceOwnerType = DataSecurityTripleDES.GetEncryptedText((int)OwnerTypeEnum.ServiceProvider); DAL.Address address = db.Address.Find(restaurant.AddressId); if (address != null) { AddressDTO addressDTO = EntityDTOHelper.GetEntityDTO <DAL.Address, AddressDTO>(address); thisMenuDTO.ServiceOwnerAddressDetail = addressDTO.GetAddressString(true); } if (thisMenuDTO != null) { thisMenuDTO.Quantity = 1; CraveatsCart craveatsCart = (Session["cart"] == null) ? new CraveatsCart(SessionManager.GetContextSessionLoggedUserID()) : (Session["cart"] as CraveatsCart); craveatsCart.AddToCart(thisMenuDTO); Session["cart"] = craveatsCart; } return(RedirectToAction("Index")); }
public ActionResult Create([Bind(Include = "Name, Detail, ContactNumber, EmailAddress")] Restaurant restaurant) { try { if (ModelState.IsValid) { db.Restaurant.Add(restaurant); db.SaveChanges(); restaurant.DateAdded = DateTime.Now; db.SaveChanges(); restaurant.ServiceProviderStatus = (int?)Common.ServiceProviderStatusEnum.Inactive; restaurant.PartnerUserId = int.Parse(DataSecurityTripleDES.GetPlainText(SessionManager.GetContextSessionLoggedUserID())); restaurant.LastUpdated = DateTime.Now; db.SaveChanges(); return(RedirectToAction("AddAddress", "Profile", new { ownerType = DataSecurityTripleDES.GetEncryptedText((int)Common.OwnerTypeEnum.ServiceProvider), ownerId = DataSecurityTripleDES.GetEncryptedText(restaurant.Id) })); } } catch (RetryLimitExceededException /* dex */) { //Log the error (uncomment dex variable name and add a line here to write a log. ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator."); } return(View(restaurant)); }
public ActionResult PartnerRestaurant(PartnerRestaurantViewModel model) { if (Session != null && Session.Contents != null) { AuthenticatedUserInfo authenticatedUserInfo = Session["loggeduser"] as AuthenticatedUserInfo; if (authenticatedUserInfo != null) { UserDTO userDTO = EntityDTOHelper.GetEntityDTO <DAL.User, UserDTO>(new CEUserManager().FindById( int.Parse(DataSecurityTripleDES.GetPlainText(authenticatedUserInfo.UserId)))); PartnerRestaurantViewModel partnerRestaurantViewModel = null; if (((Common.UserTypeEnum)userDTO.UserTypeFlag).HasFlag(Common.UserTypeEnum.PartnerRestaurant)) { partnerRestaurantViewModel = new PartnerRestaurantViewModel() { Id = userDTO.Id, ContactNumber = userDTO.ContactNumber, Email = userDTO.EmailAddress, FirstName = userDTO.FirstName, Surname = userDTO.Surname, Role = Common.UserTypeEnum.PartnerRestaurant.GetDescription() }; } if ((userDTO.AddressId ?? "").Length > 0) { DataProvider dataProvider = new DataProvider(); DAL.Address anAddress = dataProvider.FindAddressById( int.Parse(DataSecurityTripleDES.GetPlainText(userDTO.AddressId))); AddressViewModel addressViewModel = EntityDTOHelper.GetEntityDTO <DAL.Address, AddressViewModel>(anAddress); if (anAddress != null) { DAL.Region region = dataProvider.FindRegionById(anAddress.RegionId ?? 0); if (region != null) { addressViewModel.RegionAlias = region.RegionAlias; addressViewModel.RegionId = DataSecurityTripleDES.GetEncryptedText(region.Id); } partnerRestaurantViewModel.Addresses = new List <AddressViewModel>() { addressViewModel }; } } return(View("PartnerRestaurant", partnerRestaurantViewModel)); } } return(View("Error")); }
public ActionResult ForgotPassword(ForgotPasswordViewModel model) { SessionManager.RegisterSessionActivity(); if (ModelState.IsValid) { User anActiveOrBlockedUser = null; CEUserManager ceUserManager = new CEUserManager(); anActiveOrBlockedUser = ceUserManager.GetSigningUserByEmail(model.Email); if (anActiveOrBlockedUser == null) { // Don't reveal that the user does not exist or is not confirmed return(View("ForgotPasswordConfirmation")); } // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link string longTicks = DateTime.Now.Ticks.ToString(), code = DataSecurityTripleDES.GetEncryptedText(longTicks); using (CraveatsDbContext craveatsDbContext = new CraveatsDbContext()) { User anUser = craveatsDbContext.User.First(u => u.Id == anActiveOrBlockedUser.Id); anUser.ResetCode = longTicks; anUser.ResetCodeExpiry = DateTime.Now.AddDays(1); anUser.ResetCodeSentAt = DateTime.Now; anUser.LastUpdated = DateTime.Now; craveatsDbContext.SaveChanges(); } var callbackUrl = Url.Action("ResetPassword", "Login", new { userId = DataSecurityTripleDES.GetEncryptedText(anActiveOrBlockedUser.Id), code = code }, protocol: Request.Url.Scheme); StringBuilder sbSubject = new StringBuilder("Craveats reset password request"), sbEmailBody = new StringBuilder("<p>Dear [FullName],</p><p>We have received a request that you would like to reset your account password with us." + "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a></p><p>Thank you.</p><p>Craveats</p>"); CommunicationServiceProvider.SendOutgoingNotification( new MailAddress( anActiveOrBlockedUser.EmailAddress, string.Format("{0}{1}{2}", anActiveOrBlockedUser?.FirstName, " ", anActiveOrBlockedUser?.Surname).Trim()), sbSubject.ToString(), sbEmailBody.Replace("[FullName]", string.Format("{0}{1}{2}", anActiveOrBlockedUser?.FirstName, " ", anActiveOrBlockedUser?.Surname).Trim()).ToString()); return(RedirectToAction("ForgotPasswordConfirmation", "Login")); } // If we got this far, something failed, redisplay form return(View(model)); }
public ActionResult EditAddress(AddressViewModel model, string returnUrl) { SessionManager.RegisterSessionActivity(); IEnumerable <string> regionAliases = GetAllRegionAliases(); model.RegionAliases = GenUtil.GetSelectListItems(regionAliases); if (ModelState.IsValid) { DataProvider dataProvider = new DataProvider(); DAL.Address address = dataProvider.FindAddressById( int.Parse(DataSecurityTripleDES.GetPlainText(model.Id))); if (address != null) { AddressDTO addressDTO = new AddressDTO() { Id = model.Id, City = model.City, Line1 = model.Line1, Line2 = model.Line2, Postcode = model.Postcode, RegionAlias = model.RegionAlias }; using (DAL.CraveatsDbContext c = new DAL.CraveatsDbContext()) { addressDTO.RegionId = DataSecurityTripleDES.GetEncryptedText( c.Region.FirstOrDefault(r => r.CountryISO2 == "CA" && r.RegionAlias == addressDTO.RegionAlias).Id); addressDTO.CountryId = DataSecurityTripleDES.GetEncryptedText( c.Country.FirstOrDefault(s => s.ISO2 == "CA").Id); address = c.Address.FirstOrDefault(u => u.Id == address.Id); address = EntityDTOHelper.MapToEntity <AddressDTO, DAL.Address>(addressDTO, address); c.SaveChanges(); return(RedirectToAction("ProfileView")); } } } // Something is not right - so render the registration page again, // keeping the data user has entered by supplying the model. return(View("EditAddress", model)); }
// GET: RestaurantMenu/Create public ActionResult Create(string ownerType = null, string ownerId = null) { if (ownerType != null && ownerId != null) { ViewBag.ownerType = ownerType; ViewBag.ownerId = ownerId; } else { ownerType = DataSecurityTripleDES.GetEncryptedText((int)SessionManager.GetContextSessionOwnerType()); ownerId = SessionManager.GetContextSessionLoggedUserID(); ViewBag.ownerType = ownerType; ViewBag.ownerId = ownerId; } return(View()); }
public ActionResult Delete(string id, string ownerType = null, string ownerId = null) { try { RestaurantMenu restaurantMenu = db.RestaurantMenu.Find(int.Parse(DataSecurityTripleDES.GetPlainText(id))); db.RestaurantMenu.Remove(restaurantMenu); db.SaveChanges(); } catch (RetryLimitExceededException /* dex */) { //Log the error (uncomment dex variable name and add a line here to write a log. return(RedirectToAction("Delete", new { id = DataSecurityTripleDES.GetEncryptedText(id), saveChangesError = true, ownerType = ownerType, ownerId = ownerId })); } return(RedirectToAction("Index", new { ownerType = ownerType, ownerId = ownerId })); }
public void Index() { string org1 = "1", org2 = "one", org3 = "this is some data"; byte[] key = null, iv = null; Assert.AreEqual(org1, DataSecurityTripleDES.GetPlainText( DataSecurityTripleDES.GetEncryptedText(org1 /*, out key, out iv*/) /*, key, iv*/)); Assert.AreEqual(org2, DataSecurityTripleDES.GetPlainText( DataSecurityTripleDES.GetEncryptedText(org2 /*, out key, out iv*/) /*, key, iv*/)); Assert.AreEqual(org3, DataSecurityTripleDES.GetPlainText( DataSecurityTripleDES.GetEncryptedText(org3 /*, out key, out iv*/) /*, key, iv*/)); // Arrange HomeController controller = new HomeController(); // Act ViewResult result = controller.Index() as ViewResult; // Assert Assert.IsNotNull(result); }
public static string GetContextSessionID() { object xLock = new object(); int? UserId = (int?)int.Parse(DataSecurityTripleDES.GetPlainText(GetContextSessionLoggedUserID())); lock (xLock) { string SessionID = HttpContext.Current.Session.SessionID, IPAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? string.Empty).Trim() == string.Empty ? HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]?.Trim() : HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]?.Trim(); SessionTracking result = null; using (CraveatsDbContext craveatsDbContext = new CraveatsDbContext()) { result = craveatsDbContext.SessionTracking.FirstOrDefault(u => u.IPAddress == IPAddress && u.SessionID == SessionID && u.UserId == UserId); } return(DataSecurityTripleDES.GetEncryptedText(result?.Id ?? 0)); } }
// GET: RestaurantMenu public ViewResult Index( string ownerType, string ownerId, string sortOrder, string currentFilter, string searchString, int?page) { if (ownerType != null && ownerId != null) { ViewBag.ownerType = ownerType; ViewBag.ownerId = ownerId; } else { ownerType = DataSecurityTripleDES.GetEncryptedText((int)SessionManager.GetContextSessionOwnerType()); ownerId = SessionManager.GetContextSessionLoggedUserID(); ViewBag.ownerType = ownerType; ViewBag.ownerId = ownerId; } ViewBag.CurrentSort = sortOrder; ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date"; if (searchString != null) { page = 1; } else { searchString = currentFilter; } ViewBag.CurrentFilter = searchString; int?filterId = int.Parse(DataSecurityTripleDES.GetPlainText(ownerId)); var RestaurantMenus = SessionManager.GetContextSessionOwnerType() == UserTypeEnum.PartnerRestaurant ? from s in db.RestaurantMenu where s.OwnerId == filterId && s.OwnerType == 2 && s.ServiceStatus == 1 select s : from s in db.RestaurantMenu select s; if (!String.IsNullOrEmpty(searchString)) { RestaurantMenus = RestaurantMenus.Where(s => s.Name.Contains(searchString) || s.Detail.Contains(searchString)); } switch (sortOrder) { case "name_desc": RestaurantMenus = RestaurantMenus.OrderByDescending(s => s.Name); break; case "Date": RestaurantMenus = RestaurantMenus.OrderBy(s => s.LastUpdated); break; case "date_desc": RestaurantMenus = RestaurantMenus.OrderByDescending(s => s.LastUpdated); break; default: // Name ascending RestaurantMenus = RestaurantMenus.OrderBy(s => s.Name); break; } int pageSize = 25; int pageNumber = (page ?? 1); return(View(RestaurantMenus.ToPagedList(pageNumber, pageSize))); }
public static U GetEntityDTO <T, U>(T t) { string sPropName = string.Empty, tPropName = string.Empty; try { if (t != null) { U uDTO = Activator.CreateInstance <U>(); PropertyInfo[] uProps = uDTO.GetType().GetProperties(), tProps = t.GetType().GetProperties(); foreach (PropertyInfo propertyInfo in tProps) { if (propertyInfo.CanRead) { PropertyInfo uProp = uProps.FirstOrDefault(u => u.Name == propertyInfo.Name && u.CanWrite); if (uProp != null) { sPropName = $"T.{propertyInfo.Name}:{propertyInfo.PropertyType.Name}"; tPropName = $"U.{uProp.Name}:{uProp.PropertyType.Name}"; if (!(propertyInfo.Name.ToLower().EndsWith("id") && ((propertyInfo.PropertyType == typeof(System.Int32)) || ((propertyInfo.PropertyType.IsGenericType && propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(Nullable <>)) && Nullable.GetUnderlyingType(propertyInfo.PropertyType) == typeof(System.Int32))))) { if (uProp.Name == "OwnerType" && (uProp.ReflectedType.FullName == "WebApplication.Models.AddressViewModelDTO" || uProp.ReflectedType.FullName == "WebApplication.Models.AddressViewModel")) { int?tPropVal = (int?)propertyInfo.GetValue(t, null); uProp.SetValue( uDTO, tPropVal == null ? null : DataSecurityTripleDES.GetEncryptedText(tPropVal.Value)); } else { uProp.SetValue(uDTO, propertyInfo.GetValue(t, null)); } } else { int?tPropVal = (int?)propertyInfo.GetValue(t, null); uProp.SetValue( uDTO, tPropVal == null ? null : DataSecurityTripleDES.GetEncryptedText(tPropVal.Value)); } } } } return(uDTO); } return(default(U)); } catch (Exception e) { string issueWith = $"{sPropName} -> {tPropName}"; throw e; } }
public ActionResult Register(RegisterViewModel model) { SessionManager.RegisterSessionActivity(); // Get all states again var roles = GetAllRoles(); // Set these states on the model. We need to do this because // only the selected value from the DropDownList is posted back, not the whole // list of states. model.Roles = GenUtil.GetSelectListItems(roles); // In case everything is fine - i.e. both "Name" and "State" are entered/selected, // redirect user to the "Done" page, and pass the user object along via Session if (ModelState.IsValid) { SHA1HashProvider sHA1HashProvider = new SHA1HashProvider(); if (!ceUserManager.IsRegistered(model.Email)) { string sha1HashText = sHA1HashProvider.SecureSHA1(model.Password.Trim()); int? newUserID = ceUserManager.RegisterNew(model.Email, sha1HashText, model.Role); if (newUserID.HasValue) { UserDTO userDTO = new UserDTO() { Id = DataSecurityTripleDES.GetEncryptedText(newUserID), FirstName = model.FirstName, Surname = model.Surname, UserStatus = (int?)UserStatusEnum.Active }; ceUserManager.SaveUserDetail(userDTO); StringBuilder sbSubject = new StringBuilder("Craveats new registrant notification"), sbEmailBody = new StringBuilder("<p>A new user with the following detail has been registered in the system. " + $"<br/><em>FirstName </em>: {model.FirstName}" + $"<br/><em>Surname </em>: {model.Surname}" + $"<br/><em>Email </em>: {model.Email}" + $"<br/><em>Registration Type </em>: {model.Role}" + "</p><p>Thank you.</p><p>Craveats</p>"); CommunicationServiceProvider.SendOutgoingNotification( new MailAddress( model.Email, string.Format("{0}{1}{2}", model.FirstName, " ", model?.Surname).Trim()), sbSubject.ToString(), sbEmailBody.ToString()); User result = ceUserManager.FindByCriteria(email: model.Email, userStatusEnums: new List <int> { (int)UserStatusEnum.Active, (int)UserStatusEnum.Blocked }); if (result != null) { userDTO = EntityDTOHelper.GetEntityDTO <User, UserDTO>(result); AuthenticatedUserInfo authenticatedUserInfo = new AuthenticatedUserInfo(userDTO); Session["loggeduser"] = authenticatedUserInfo; SessionManager.RegisterSessionActivity(userID: result.Id, loggedInAt: DateTime.Now); ceUserManager.SignInUser(HttpContext, string.Format("{0}", authenticatedUserInfo.FullName), false); return(RedirectToAction("Index", "Home")); } else { ModelState.AddModelError(string.Empty, "An error occurred in reading user data. Please review input and re-try."); } } else { ModelState.AddModelError(string.Empty, "An error occurred in registering new user. Please review input and re-try."); } } else { ModelState.AddModelError(string.Empty, "Email is registered and cannot be used to create another account."); } } // Something is not right - so render the registration page again, // keeping the data user has entered by supplying the model. return(View("Register", model)); }
public ActionResult FinalisePayment(string stripeToken) { try { if (ModelState.IsValid) { var cart = Session["cart"] as CraveatsCart; //long? total = (long)order.OrderTotal; // Set your secret key: remember to change this to your live secret key in production // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.SetApiKey("sk_test_Rg2BSmdAQkVhLwSdOZyTqHGZ"); // Token is created using Checkout or Elements! // Get the payment token submitted by the form: //var token = CraveatsCart.Token; // Using ASP.NET MVC long chargeAmount = (long)(decimal.Parse(CommonUtility.DoFormat((cart.CartTotalBeforeTax + cart.CartTotalTax))) * 100); var options = new ChargeCreateOptions { Amount = chargeAmount, Currency = "cad", Description = "Order Payment 20181129", SourceId = stripeToken }; var service = new ChargeService(); Charge charge = service.Create(options); if (charge.Status == "succeeded") { DAL.Order newOrder = new DAL.Order() { DateCreated = DateTime.Now, DiscountTotal = 0.0m, OrderStatus = (int)OrderStatusEnum.Paid, OrderTotal = cart.CartTotalBeforeTax, SessionId = int.Parse(DataSecurityTripleDES.GetPlainText(SessionManager.GetContextSessionID())), TaxTotal = cart.CartTotalTax, UserId = int.Parse(DataSecurityTripleDES.GetPlainText(cart.OwnerId)) }; db.Order.Add(newOrder); db.SaveChanges(); foreach (RestaurantMenuCartDTO restaurantMenuCartDTO in cart.Items) { db.OrderDetail.Add(new OrderDetail() { IsTaxable = restaurantMenuCartDTO.IsTaxable, OrderId = newOrder.Id, ServiceId = int.Parse(DataSecurityTripleDES.GetPlainText(restaurantMenuCartDTO.Id)), ServiceOwnerId = int.Parse(DataSecurityTripleDES.GetPlainText(restaurantMenuCartDTO.ServiceOwnerId)), ServiceOwnerType = int.Parse(DataSecurityTripleDES.GetPlainText(restaurantMenuCartDTO.ServiceOwnerType)), TaxRate = restaurantMenuCartDTO.TaxRate, UnitPrice = restaurantMenuCartDTO.UnitPrice, Quantity = restaurantMenuCartDTO.Quantity, Name = restaurantMenuCartDTO.Name, Detail = restaurantMenuCartDTO.Detail }); db.SaveChanges(); } db.OrderPayment.Add(new OrderPayment() { DateProcessed = DateTime.Now, GatewayResponseCode = charge.Id, GatewayResponseVerbose = charge.Status, TotalAmount = (decimal)(charge.Amount / 100.00) }); db.SaveChanges(); cart = null; Session["cart"] = null; return(View("Success", new WebApplication.Models.ViewModel.OrderConfirmationDTO() { Id = DataSecurityTripleDES.GetEncryptedText(newOrder.Id), StatusMessage = "success" })); } else { ModelState.AddModelError("", "Unable to accept charges. Try again, and if the problem persists please review your card detail with your bank."); } } } catch (RetryLimitExceededException /* dex */) { //Log the error (uncomment dex variable name and add a line here to write a log. ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator."); } return(View()); }
public ActionResult AddAddress(AddressViewModel model, string returnUrl) { SessionManager.RegisterSessionActivity(); IEnumerable <string> regionAliases = GetAllRegionAliases(); model.RegionAliases = GenUtil.GetSelectListItems(regionAliases); if (ModelState.IsValid) { AuthenticatedUserInfo authenticatedUserInfo = Session["loggeduser"] as AuthenticatedUserInfo; if (authenticatedUserInfo != null) { int ownerType = model.OwnerType?.Length > 0 ? int.Parse(DataSecurityTripleDES.GetPlainText(model.OwnerType)) : -1; int ownerId = model.OwnerId?.Length > 0 ? int.Parse(DataSecurityTripleDES.GetPlainText(model.OwnerType)) : -1; DAL.User addressOwner = null; if (!(ownerType > -1 && ownerId > 0)) { addressOwner = new CEUserManager().FindById( int.Parse(DataSecurityTripleDES.GetPlainText(authenticatedUserInfo.UserId))); } DataProvider dataProvider = new DataProvider(); AddressDTO addressDTO = new AddressDTO() { City = model.City, Line1 = model.Line1, Line2 = model.Line2, Postcode = model.Postcode, RegionAlias = model.RegionAlias }; if (addressOwner != null && !addressOwner.AddressId.HasValue) { addressDTO.OwnerType = (int)Common.OwnerTypeEnum.User; addressDTO.OwnerId = authenticatedUserInfo.UserId; using (DAL.CraveatsDbContext c = new DAL.CraveatsDbContext()) { addressDTO.RegionId = DataSecurityTripleDES.GetEncryptedText( c.Region.FirstOrDefault(r => r.CountryISO2 == "CA" && r.RegionAlias == addressDTO.RegionAlias).Id); addressDTO.CountryId = DataSecurityTripleDES.GetEncryptedText( c.Country.FirstOrDefault(s => s.ISO2 == "CA").Id); DAL.Address newAddress = EntityDTOHelper.MapToEntity <AddressDTO, DAL.Address>( addressDTO, null, true); newAddress.AddressStatus = (int?)Common.AddressStatusEnum.Active; c.Entry(newAddress).State = System.Data.Entity.EntityState.Added; c.SaveChanges(); addressOwner = c.User.FirstOrDefault(u => u.Id == newAddress.OwnerId.Value); addressOwner.AddressId = newAddress.Id; addressOwner.LastUpdated = DateTime.Now; c.SaveChanges(); return(RedirectToAction("ProfileView", "Profile")); } } else if (ownerType > -1 && ownerId > 0) { addressDTO.OwnerType = ownerType; addressDTO.OwnerId = model.OwnerId; using (DAL.CraveatsDbContext c = new DAL.CraveatsDbContext()) { addressDTO.RegionId = DataSecurityTripleDES.GetEncryptedText( c.Region.FirstOrDefault(r => r.CountryISO2 == "CA" && r.RegionAlias == addressDTO.RegionAlias).Id); addressDTO.CountryId = DataSecurityTripleDES.GetEncryptedText( c.Country.FirstOrDefault(s => s.ISO2 == "CA").Id); DAL.Address newAddress = EntityDTOHelper.MapToEntity <AddressDTO, DAL.Address>( addressDTO, null, true); newAddress.AddressStatus = (int?)Common.AddressStatusEnum.Active; c.Entry(newAddress).State = System.Data.Entity.EntityState.Added; c.SaveChanges(); DAL.Restaurant restaurant = c.Restaurant.FirstOrDefault(u => u.Id == newAddress.OwnerId.Value); restaurant.AddressId = newAddress.Id; restaurant.LastUpdated = DateTime.Now; c.SaveChanges(); return(RedirectToAction("Index", "RestaurantMenu", new { ownerType = DataSecurityTripleDES.GetEncryptedText((int)Common.OwnerTypeEnum.ServiceProvider), ownerId = DataSecurityTripleDES.GetEncryptedText(restaurant.Id) })); } } ModelState.AddModelError("", "An address exists for this owner."); } } // Something is not right - so render the registration page again, // keeping the data user has entered by supplying the model. return(View(model)); }