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));
        }
Пример #2
0
        public static bool RegisterSessionActivity(int?userID = null, DateTime?loggedInAt = null, DateTime?loggedOffAt = null)
        {
            object xLock = new object();

            lock (xLock) {
                AuthenticatedUserInfo authenticatedUserInfo = HttpContext.Current.Session["loggeduser"] as AuthenticatedUserInfo;
                if (EditSessionTracking(new SessionTracking()
                {
                    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(),
                    UserId = userID.HasValue ? userID : authenticatedUserInfo != null
                        ? (int?)int.Parse(DataSecurityTripleDES.GetPlainText(authenticatedUserInfo.UserId))
                        : null,
                    LoggedInAt = loggedInAt,
                    LoggedOutAt = loggedOffAt
                }) != null)
                {
                    return(true);
                }
                ;
                return(false);
            }
        }
        public async Task <ActionResult> ChangePassword(ChangePasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            loggedUserId = int.Parse(DataSecurityTripleDES.GetPlainText(model.UserId));
            var result = await ceUserManager.ChangePasswordAsync(loggedUserId, model.OldPassword, model.NewPassword);

            if (result.Succeeded)
            {
                var userDTO = await ceUserManager.FindByIdAsync(loggedUserId);

                if (userDTO != null)
                {
                    AuthenticatedUserInfo authenticatedUserInfo = new AuthenticatedUserInfo(userDTO);

                    Session["loggeduser"] = authenticatedUserInfo;

                    SessionManager.RegisterSessionActivity(userID: loggedUserId, loggedInAt: DateTime.Now);

                    await ceUserManager.SignIn(username : authenticatedUserInfo.FullName, isPersistent : false, rememberBrowser : false);
                }
                return(RedirectToAction("Index", new { Message = ManageMessageId.ChangePasswordSuccess }));
            }
            AddErrors(result);
            return(View(model));
        }
Пример #4
0
        // GET: CraveatsUser
        public ViewResult Index(string sortOrder, string currentFilter, string searchString, int?page)
        {
            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;


            Common.UserTypeEnum userTypeEnumFromSession = SessionManager.GetContextSessionOwnerType();

            int?sessionLoggedUserId = int.Parse(DataSecurityTripleDES.GetPlainText(
                                                    SessionManager.GetContextSessionLoggedUserID()));

            var users = (userTypeEnumFromSession == Common.UserTypeEnum.CraveatsAdmin)
                ? from u in db.User
                        where u.Id != sessionLoggedUserId
                        select u
                : from u in db.User
                        where u.Id == 0
                        select u;

            if (!String.IsNullOrEmpty(searchString))
            {
                users = users.Where(s => ((s.FirstName ?? "") + " " + (s.Surname ?? "")).Contains(searchString) ||
                                    s.EmailAddress.Contains(searchString));
            }
            switch (sortOrder)
            {
            case "name_desc":
                users = users.OrderByDescending(s => ((s.FirstName ?? "") + " " + (s.Surname ?? "")));
                break;

            case "Date":
                users = users.OrderBy(s => s.LastUpdated);
                break;

            case "date_desc":
                users = users.OrderByDescending(s => s.LastUpdated);
                break;

            default:      // Name ascending
                users = users.OrderBy(s => ((s.FirstName ?? "") + " " + (s.Surname ?? "")));
                break;
            }

            int pageSize   = 25;
            int pageNumber = (page ?? 1);

            return(View(users.ToPagedList(pageNumber, pageSize)));
        }
        public ActionResult EditPost(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var RestaurantToUpdate = db.Restaurant.Find(int.Parse(DataSecurityTripleDES.GetPlainText(id)));

            if (TryUpdateModel(RestaurantToUpdate, "",
                               new string[] { "LastName", "FirstMidName", "EnrollmentDate" }))
            {
                try
                {
                    db.SaveChanges();

                    return(RedirectToAction("Index"));
                }
                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(RestaurantToUpdate));
        }
        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 ManageController()
 {
     if (Session != null && Session.Contents != null && Session["loggeduser"] != null)
     {
         AuthenticatedUserInfo authenticatedUserInfo = Session["loggeduser"] as AuthenticatedUserInfo;
         loggedUserId = int.Parse(DataSecurityTripleDES.GetPlainText(authenticatedUserInfo.UserId));
     }
 }
Пример #8
0
        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));
        }
        // GET: Restaurant/Edit/5
        public ActionResult Edit(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Restaurant Restaurant = db.Restaurant.Find(int.Parse(DataSecurityTripleDES.GetPlainText(id)));

            if (Restaurant == null)
            {
                return(HttpNotFound());
            }
            return(View(Restaurant));
        }
Пример #11
0
        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/Edit/5
        public ActionResult Edit(string id, string ownerType = null, string ownerId = null)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RestaurantMenu restaurantMenu = db.RestaurantMenu.Find(int.Parse(DataSecurityTripleDES.GetPlainText(id)));

            if (restaurantMenu == null)
            {
                return(HttpNotFound());
            }
            return(View(restaurantMenu));
        }
 public ActionResult Delete(string id)
 {
     try
     {
         Restaurant Restaurant = db.Restaurant.Find(int.Parse(DataSecurityTripleDES.GetPlainText(id)));
         db.Restaurant.Remove(Restaurant);
         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 = id, saveChangesError = true }));
     }
     return(RedirectToAction("Index"));
 }
        // 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());
        }
        // GET: RestaurantMenu/Delete/5
        public ActionResult Delete(string id, bool?saveChangesError = false, string ownerType = null, string ownerId = null)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (saveChangesError.GetValueOrDefault())
            {
                ViewBag.ErrorMessage = "Delete failed. Try again, and if the problem persists see your system administrator.";
            }
            var RestaurantMenuToUpdate = db.RestaurantMenu.Find(int.Parse(DataSecurityTripleDES.GetPlainText(id)));

            if (RestaurantMenuToUpdate == null)
            {
                return(HttpNotFound());
            }
            return(View(RestaurantMenuToUpdate));
        }
        public ActionResult Create([Bind(Include = "Name, Brief, Detail, UnitPrice")] RestaurantMenu restaurantMenu, string ownerType = null, string ownerId = null)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    //int.Parse(DataSecurityTripleDES.GetPlainText(SessionManager.GetContextSessionLoggedUserID()));
                    db.RestaurantMenu.Add(restaurantMenu);
                    db.SaveChanges();

                    restaurantMenu.DateAdded = DateTime.Now;
                    db.SaveChanges();

                    restaurantMenu.ServiceStatus = (int?)Common.ServiceStatusEnum.Active;
                    restaurantMenu.OwnerId       = int.Parse(
                        DataSecurityTripleDES.GetPlainText(
                            ownerId));
                    restaurantMenu.OwnerType   = (int)Common.OwnerTypeEnum.ServiceProvider;
                    restaurantMenu.IsTaxable   = true;
                    restaurantMenu.TaxRate     = 13m;
                    restaurantMenu.LastUpdated = DateTime.Now;
                    db.SaveChanges();

                    Restaurant ownerRestaurant = db.Restaurant.FirstOrDefault(u => u.Id == restaurantMenu.OwnerId &&
                                                                              (u.ServiceProviderStatus.HasValue &&
                                                                               u.ServiceProviderStatus.Value == (int)Common.ServiceProviderStatusEnum.Inactive) &&
                                                                              u.AddressId.HasValue);
                    if (ownerRestaurant != null)
                    {
                        ownerRestaurant.ServiceProviderStatus = (int)Common.ServiceProviderStatusEnum.Active;
                        db.SaveChanges();
                    }

                    return(RedirectToAction("Index", new { ownerType = ownerType, ownerId = ownerId }));
                }
            }
            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(restaurantMenu));
        }
        public ActionResult EditPost([Bind(Include = "Name, Brief, Detail, UnitPrice")] RestaurantMenu restaurantMenu,
                                     string id        = null,
                                     string ownerId   = null,
                                     string ownerType = null)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (restaurantMenu == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if ((restaurantMenu.Brief ?? string.Empty) == string.Empty ||
                (restaurantMenu.Name ?? string.Empty) == string.Empty ||
                (restaurantMenu.Detail ?? string.Empty) == string.Empty ||
                (restaurantMenu.UnitPrice ?? 0) <= 0)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var RestaurantMenuToUpdate = db.RestaurantMenu.Find(int.Parse(DataSecurityTripleDES.GetPlainText(id)));

            try
            {
                RestaurantMenuToUpdate.UnitPrice = restaurantMenu.UnitPrice;
                RestaurantMenuToUpdate.Name      = restaurantMenu.Name;
                RestaurantMenuToUpdate.Detail    = restaurantMenu.Detail;
                RestaurantMenuToUpdate.Brief     = restaurantMenu.Brief;

                db.SaveChanges();

                return(RedirectToAction("Index", new { ownerType = ownerType, ownerId = ownerId }));
            }
            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(RestaurantMenuToUpdate));
        }
        internal void SaveUserDetail(UserDTO userDTO)
        {
            try
            {
                using (CraveatsDbContext craveatsDbContext = new CraveatsDbContext())
                {
                    int  userId = int.Parse(DataSecurityTripleDES.GetPlainText(userDTO.Id));
                    User anUser = craveatsDbContext.User.FirstOrDefault(u => u.Id == userId);

                    anUser = EntityDTOHelper.MapToEntity <UserDTO, User>(userDTO, anUser);

                    anUser.LastUpdated = DateTime.Now;
                    craveatsDbContext.SaveChanges();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
 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 }));
 }
Пример #20
0
        // GET: OrderHistory
        public ActionResult Index(string id)
        {
            var viewModel = new OrderOrderDetailIndexData();

            int userId = int.Parse(
                DataSecurityTripleDES.GetPlainText(
                    SessionManager.GetContextSessionLoggedUserID()));

            List <Order> userOrders = db.Order.Where(u =>
                                                     u.UserId == userId).OrderByDescending(
                u => u.LastUpdated ?? u.DateCreated).ToList();

            List <OrderHistoryDTO> orderHistoryDTOs = new List <OrderHistoryDTO>();

            foreach (Order anOrder in userOrders)
            {
                orderHistoryDTOs.Add(EntityDTOHelper.GetEntityDTO <Order, OrderHistoryDTO>(anOrder));
            }
            viewModel.Orders = orderHistoryDTOs;

            if (id != null)
            {
                int?anOrderId = (int?)int.Parse(
                    DataSecurityTripleDES.GetPlainText(id));

                List <OrderDetail> userOrderDetails = db.OrderDetail.Where(u =>
                                                                           u.OrderId == anOrderId).OrderBy(
                    u => u.Id).ToList();

                List <OrderDetailHistoryDTO> orderDetailHistoryDTO = new List <OrderDetailHistoryDTO>();
                foreach (OrderDetail anOrderDetail in userOrderDetails)
                {
                    orderDetailHistoryDTO.Add(EntityDTOHelper.GetEntityDTO <OrderDetail, OrderDetailHistoryDTO>(anOrderDetail));
                }

                ViewBag.OrderId        = id;
                viewModel.OrderDetails = orderDetailHistoryDTO;
            }

            return(View(viewModel));
        }
        public ActionResult ResetPassword(ResetPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            User          anActiveOrBlockedUser = null;
            CEUserManager ceUserManager = new CEUserManager();
            int           userIDFromRequest = 0;
            string        plainCode = null, errorInTranslation = string.Empty;

            try
            {
                userIDFromRequest = int.Parse(DataSecurityTripleDES.GetPlainText(model.UserId));
                plainCode         = DataSecurityTripleDES.GetPlainText(model.Code);

                DateTime minExpiry = DateTime.Now;

                using (CraveatsDbContext craveatsDbContext = new CraveatsDbContext())
                {
                    anActiveOrBlockedUser = craveatsDbContext.User.First(u => u.Id == userIDFromRequest && u.ResetCode == plainCode && (!u.ResetCodeExpiry.HasValue || u.ResetCodeExpiry >= minExpiry));
                    anActiveOrBlockedUser.ResetCodeExpiry = DateTime.Now;
                    anActiveOrBlockedUser.ResetCode       = null;

                    anActiveOrBlockedUser.Password = new SHA1HashProvider().SecureSHA1(model.Password.Trim());

                    anActiveOrBlockedUser.LastUpdated = DateTime.Now;

                    craveatsDbContext.SaveChanges();
                }
            }
            catch (Exception e)
            {
                Trace.WriteLine(e);
            }

            return(RedirectToAction("ResetPasswordConfirmation", "Account"));
        }
        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);
        }
Пример #23
0
        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: Restaurant
        public ViewResult Index(string sortOrder, string currentFilter, string searchString, int?page)
        {
            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;


            Common.UserTypeEnum userTypeEnumFromSession = SessionManager.GetContextSessionOwnerType();

            int?sessionLoggedUserId = int.Parse(DataSecurityTripleDES.GetPlainText(
                                                    SessionManager.GetContextSessionLoggedUserID()));
            var Restaurants = (userTypeEnumFromSession == Common.UserTypeEnum.CraveatsAdmin)
                ? from s in db.Restaurant
                              select s
                : (userTypeEnumFromSession == Common.UserTypeEnum.PartnerRestaurant)
                    ? from s in db.Restaurant
                              where s.PartnerUserId == sessionLoggedUserId
                              select s
                    : from s in db.Restaurant
                              where s.PartnerUserId == 0
                              select s;

            if (!String.IsNullOrEmpty(searchString))
            {
                Restaurants = Restaurants.Where(s => s.Name.Contains(searchString) ||
                                                s.Detail.Contains(searchString));
            }
            switch (sortOrder)
            {
            case "name_desc":
                Restaurants = Restaurants.OrderByDescending(s => s.Name);
                break;

            case "Date":
                Restaurants = Restaurants.OrderBy(s => s.LastUpdated);
                break;

            case "date_desc":
                Restaurants = Restaurants.OrderByDescending(s => s.LastUpdated);
                break;

            default:      // Name ascending
                Restaurants = Restaurants.OrderBy(s => s.Name);
                break;
            }

            int pageSize   = 25;
            int pageNumber = (page ?? 1);

            return(View(Restaurants.ToPagedList(pageNumber, pageSize)));
        }
        public ActionResult Remove(string id)
        {
            RestaurantMenuCartDTO thisMenuDTO = EntityDTOHelper.GetEntityDTO <RestaurantMenu, RestaurantMenuCartDTO>(menuModel.find(int.Parse(DataSecurityTripleDES.GetPlainText(id))));

            if (thisMenuDTO != null && Session["cart"] != null)
            {
                CraveatsCart craveatsCart = Session["cart"] as CraveatsCart;
                craveatsCart.RemoveItem(id);

                Session["cart"] = craveatsCart;
            }

            return(RedirectToAction("Index"));
        }
        // 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 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 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));
        }
Пример #29
0
        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;
            }
        }
Пример #30
0
        internal static T2 MapToEntity <T1, T2>(T1 sourceDTO, T2 targetEntity, bool createInstance = false)
        {
            try
            {
                if (sourceDTO != null)
                {
                    if (targetEntity == null && createInstance)
                    {
                        targetEntity = Activator.CreateInstance <T2>();
                    }

                    PropertyInfo[] sourceProps = sourceDTO.GetType().GetProperties(),
                    targetProps = targetEntity?.GetType().GetProperties();

                    if (targetProps?.Length > 0)
                    {
                        foreach (PropertyInfo propertyInfo in targetProps)
                        {
                            if (propertyInfo.CanWrite)
                            {
                                PropertyInfo uProp = sourceProps.FirstOrDefault(u => u.Name == propertyInfo.Name && u.CanRead);
                                if (uProp != null)
                                {
                                    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)))))
                                    {
                                        object objValue = uProp.GetValue(
                                            sourceDTO,
                                            null);

                                        if (objValue != null)
                                        {
                                            if (propertyInfo.PropertyType == uProp.PropertyType)
                                            {
                                                propertyInfo.SetValue(
                                                    targetEntity,
                                                    objValue);
                                            }
                                            else
                                            {
                                                if (propertyInfo.Name == "OwnerType" &&
                                                    (propertyInfo.ReflectedType.FullName == "WebApplication.DAL.Address" ||
                                                     propertyInfo.ReflectedType.FullName == "WebApplication.Models.ViewModel.AddressDTO"))
                                                {
                                                    int?iVal = int.Parse(DataSecurityTripleDES.GetPlainText(
                                                                             uProp.GetValue(
                                                                                 sourceDTO,
                                                                                 null)));

                                                    propertyInfo.SetValue(
                                                        targetEntity,
                                                        iVal);
                                                }
                                                else
                                                {
                                                    propertyInfo.SetValue(targetEntity,
                                                                          Convert.ChangeType(
                                                                              objValue,
                                                                              propertyInfo.PropertyType));
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        object objValue = DataSecurityTripleDES.GetPlainText(
                                            uProp.GetValue(
                                                sourceDTO,
                                                null));

                                        if (objValue != null)
                                        {
                                            if (((propertyInfo.PropertyType.IsGenericType &&
                                                  propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(Nullable <>)) &&
                                                 Nullable.GetUnderlyingType(propertyInfo.PropertyType) == typeof(System.Int32)))
                                            {
                                                propertyInfo.SetValue(targetEntity,
                                                                      (int?)int.Parse(objValue.ToString()));
                                            }
                                            else
                                            {
                                                propertyInfo.SetValue(targetEntity,
                                                                      Convert.ChangeType(objValue,
                                                                                         propertyInfo.PropertyType));
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        return(targetEntity);
                    }
                }

                return(default(T2));
            }
            catch (Exception e)
            {
                throw e;
            }
        }