//
        // GET: /Manage/Index
        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            ePontiv2Entities db = new ePontiv2Entities();

            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
                : message == ManageMessageId.Error ? "An error has occurred."
                : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
                : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
                : "";

            var userId     = User.Identity.GetUserId();
            int?SiteUserID = db.SiteUsers.Where(p => p.ASPNetUserID == userId).Select(p => p.SiteUserID).FirstOrDefault();
            //var model = new IndexViewModel
            //{
            //    HasPassword = HasPassword(),
            //    PhoneNumber = await UserManager.GetPhoneNumberAsync(userId),
            //    TwoFactor = await UserManager.GetTwoFactorEnabledAsync(userId),
            //    Logins = await UserManager.GetLoginsAsync(userId),
            //    BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId),
            //};
            var model = db.GetUserProfileInfoBySiteUserID(SiteUserID).FirstOrDefault();

            ViewBag.HasPassword = HasPassword();
            return(View(model));
        }
Esempio n. 2
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
            {
                string id = "";
                int    SiteUserId = 0, license = 0;
                using (ePontiv2Entities db = new ePontiv2Entities())
                {
                    id         = db.AspNetUsers.Where(p => p.UserName == model.Email).Select(p => p.Id).FirstOrDefault();
                    SiteUserId = db.SiteUsers.Where(p => p.ASPNetUserID == id).Select(p => p.SiteUserID).FirstOrDefault();
                    license    = (int)db.SiteLicenseOrdered.Where(p => p.SiteUserID == SiteUserId).Select(p => p.LicenseID).FirstOrDefault();
                }
                if (license == 1)
                {
                    Session["IsAdmin"] = true;
                }
                else
                {
                    Session["IsAdmin"] = false;
                }
                if (returnUrl != null && returnUrl.Trim() != "")
                {
                    return(RedirectToLocal(returnUrl));
                }
                else
                {
                    return(RedirectToAction("Index", "Dashboard", new { area = "Sections" }));
                }
            }

            //return RedirectToLocal(returnUrl);
            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
Esempio n. 3
0
 public static void InsertErrorLog(errorlog ErrorLog)
 {
     try
     {
         using (ePontiv2Entities db = new ePontiv2Entities())
         {
             db.errorlog.Add(ErrorLog);
             db.SaveChanges();
         }
     }
     catch (Exception ex) { }
 }
Esempio n. 4
0
        public ActionResult Register(string invitation = "")
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Dashboard", new { area = "Sections" }));
            }

            RegisterViewModel model = new RegisterViewModel();

            //string regnote = "Create a new account.";

            if (!string.IsNullOrWhiteSpace(invitation))
            {
                model.InvitationCode = invitation;

                using (ePontiv2Entities db = new ePontiv2Entities())
                {
                    var aspNetUser = db.AspNetUsers.Where(p => p.InvitationCode == invitation && p.InvitationAccepted != true).FirstOrDefault();
                    if (aspNetUser == null)
                    {
                        model.InvitationCodeValid = false;
                        return(View(model));
                    }

                    var siteUser = db.SiteUsers.Where(p => p.ASPNetUserID == aspNetUser.Id).FirstOrDefault();
                    if (siteUser == null)
                    {
                        model.InvitationCodeValid = false;
                        return(View(model));
                    }

                    var company = db.SiteCompanies.Where(p => p.SiteCoID == siteUser.SiteCoID).FirstOrDefault();
                    if (company == null)
                    {
                        model.InvitationCodeValid = false;
                        return(View(model));
                    }

                    model.InvitationCodeValid = true;
                    model.Email     = aspNetUser.Email;
                    model.Phone     = aspNetUser.PhoneNumber;
                    model.FirstName = siteUser.UserFirstName;
                    model.LastName  = siteUser.UserLastName;
                    model.CompanyDetails.CompanyID   = company.SiteCoID;
                    model.CompanyDetails.CompanyName = company.CoName;
                }
            }

            model.CompanyDetails.Country = "USA";

            return(View(model));
        }
        public ActionResult UpdateCommunications(GetUserProfileInfoBySiteUserID_Result obj)
        {
            ePontiv2Entities db = new ePontiv2Entities();
            var userId          = User.Identity.GetUserId();
            int?SiteUserID      = db.SiteUsers.Where(p => p.ASPNetUserID == userId).Select(p => p.SiteUserID).FirstOrDefault();

            if (obj != null)
            {
                db.UpdateUserCommBySiteUserID(SiteUserID, obj.Cases, obj.Events, obj.Calls, obj.WorkOrders, obj.Purchase_Order_Requests, obj.Change_Order_Requests, obj.Deliveries, obj.TimeKeeper);
                db.SaveChanges();
                return(Json(new { status = "success" }));
            }
            return(Json(new { status = "error" }));
        }
        public ActionResult UpdateProfile(UserProfile usr)
        {
            ePontiv2Entities db = new ePontiv2Entities();
            var userId          = User.Identity.GetUserId();
            int?SiteUserID      = db.SiteUsers.Where(p => p.ASPNetUserID == userId).Select(p => p.SiteUserID).FirstOrDefault();

            if (usr != null)
            {
                var model = db.GetUserProfileInfoBySiteUserID(SiteUserID).FirstOrDefault();
                db.UpdateUserProfileInfoBySiteUserID(SiteUserID, usr.UserDisplayName, usr.Job_Title, usr.E_Mail, usr.Phone, usr.Calendar_Color);
                db.SaveChanges();
                return(Json(new { status = "success" }));
            }
            return(Json(new { status = "error" }));
        }
Esempio n. 7
0
        public ActionResult Invite()
        {
            var manager     = new UserManager <ApplicationUser>(new Microsoft.AspNet.Identity.EntityFramework.UserStore <ApplicationUser>(new ApplicationDbContext()));
            var currentUser = manager.FindById(User.Identity.GetUserId());
            var siteUserID  = currentUser.siteuserid;
            var siteCoID    = currentUser.sitecoid;

            using (ePontiv2Entities db = new ePontiv2Entities())
            {
                ViewBag.Licenses = new SelectList(db.GetLicensesBySiteCoID(siteCoID).ToList(), nameof(GetLicenseListBySiteCoID_Result.LicenseID), nameof(GetLicenseListBySiteCoID_Result.Version));
                ViewBag.Profiles = new SelectList(db.GetProfilesBySiteCoID(siteCoID).ToList(), nameof(GetProfilesBySiteCoID_Result.ViewID), nameof(GetProfilesBySiteCoID_Result.Name));
            }
            var model = new Models.InviteUserModel();

            return(View(model));
        }
        public QBAuthorizationdto IsTokenAvailable(object oauthController, int siteCoID)
        {
            var oAuthDetails = new QBAuthorizationdto();

            using (var db = new ePontiv2Entities())
            {
                CoQuickBooks currentIndex = db.CoQuickBooks.Where(p => p.SiteCoID == siteCoID).FirstOrDefault();
                if (currentIndex != null)
                {
                    string testAccesToken = Utility.Decrypt(Encoding.UTF8.GetString(currentIndex.AccessToken), oAuthDetails.SecurityKey);
                    oAuthDetails.AccessToken       = testAccesToken;
                    oAuthDetails.AccessTokenSecret = currentIndex.apiSecret;
                    oAuthDetails.IsConnected       = true;
                    oAuthDetails.DataSource        = currentIndex.DataSource;
                    oAuthDetails.Realmid           = currentIndex.RealmID;
                    Save(oauthController, oAuthDetails);
                }
            }
            return(oAuthDetails);
        }
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            HttpSessionStateBase session = filterContext.HttpContext.Session;
            ePontiv2Entities     db      = new ePontiv2Entities();

            // set up user profile here
            if (User.Identity.IsAuthenticated)
            {
                // Session.Remove("displayusername");
                aspnetuserid = User.Identity.GetUserId();
                var manager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
                //var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(DBContext));
                var currentUser = manager.FindById(User.Identity.GetUserId());
                siteuserid                 = currentUser.siteuserid;
                siteusercompanyid          = currentUser.sitecoid;
                displayusername            = db.SiteUsers.Where(p => p.SiteUserID == siteuserid).Select(p => p.UserDisplayName).FirstOrDefault();
                Session["displayusername"] = displayusername;
                // check session for company id and name
                //if (Session["companyname"] != null) {
                //    companyname = Session["companyname"].ToString();
                //} else {
                if (siteusercompanyid > 0)
                {
                    SiteCompanies sitecompany = db.SiteCompanies.Where(x => x.SiteCoID == siteusercompanyid).ToList().Single();
                    companyname            = sitecompany.CoName;
                    Session["companyname"] = companyname;
                }
                //   }
                ViewBag.companyname = companyname;
                var siteco = db.SiteCompanies.Where(p => p.SiteCoID == (siteusercompanyid)).FirstOrDefault();
                ViewBag.SiteCoInfo = siteco;
                if (siteco.Logo != null)
                {
                    Session.Remove("ImageData");
                    string imageBase64Data = Convert.ToBase64String(siteco.Logo);
                    string imageDataURL    = string.Format("data:image/png;base64,{0}", imageBase64Data);
                    Session["ImageData"] = imageDataURL;
                }
            }
        }
Esempio n. 10
0
        public async Task <ActionResult> Invite(InviteUserModel Model, int?CoLicense, int?CoProfile)
        {
            if (ModelState.IsValid)
            {
                var manager     = new UserManager <ApplicationUser>(new Microsoft.AspNet.Identity.EntityFramework.UserStore <ApplicationUser>(new ApplicationDbContext()));
                var currentUser = manager.FindById(User.Identity.GetUserId());
                var siteUserID  = currentUser.siteuserid;
                var siteCoID    = currentUser.sitecoid;

                using (ePontiv2Entities db = new ePontiv2Entities())
                    using (TransactionScope tran = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                    {
                        CommonRepository repo = new CommonRepository();
                        ViewBag.Licenses = new SelectList(db.GetLicensesBySiteCoID(siteCoID).ToList(), nameof(GetLicenseListBySiteCoID_Result.LicenseID), nameof(GetLicenseListBySiteCoID_Result.Version));
                        ViewBag.Profiles = new SelectList(db.GetProfilesBySiteCoID(siteCoID).ToList(), nameof(GetProfilesBySiteCoID_Result.ViewID), nameof(GetProfilesBySiteCoID_Result.Name));
                        string invitationCode = Guid.NewGuid().ToString("n") + Guid.NewGuid().ToString("n");
                        //db.InsertInviteeBySiteCoID(siteCoID, Model.FirstName, Model.LastName, CoProfile, Model.Email, Model.Phone, invitationCode, CoLicense);
                        //db.SaveChanges();
                        //ASP Net User
                        var user = new ApplicationUser
                        {
                            UserName    = Model.Email,
                            Email       = Model.Email,
                            PhoneNumber = Model.Phone,
                            sitecoid    = siteCoID
                        };

                        var userCreateStatus = await UserManager.CreateAsync(user);

                        if (userCreateStatus.Succeeded == false)
                        {
                            AddErrors(userCreateStatus);
                            return(View(Model));
                        }

                        //site user
                        var siteUser = new SiteUsers();
                        db.SiteUsers.Add(siteUser);

                        siteUser.ASPNetUserID    = user.Id;
                        siteUser.SiteCoID        = siteCoID;
                        siteUser.UserFirstName   = Model.FirstName;
                        siteUser.UserLastName    = Model.LastName;
                        siteUser.UserDisplayName = string.Format("{0} {1}", Model.FirstName, Model.LastName);
                        siteUser.UserStatus      = "Active";
                        siteUser.TimeZoneID      = 1;
                        db.SaveChanges();

                        var aspNetUser = db.AspNetUsers.Where(p => p.Id == user.Id).FirstOrDefault();
                        if (aspNetUser != null)
                        {
                            aspNetUser.siteuserid     = siteUser.SiteUserID;
                            aspNetUser.sitecoid       = siteUser.SiteCoID ?? 0;
                            aspNetUser.InvitationCode = invitationCode;

                            db.SaveChanges();
                        }
                        tran.Complete();

                        // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                        // Send an email with this link
                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        try
                        {
                            var callbackUrl = Url.Action("Register", "Account", new { invitation = invitationCode }, protocol: Request.Url.Scheme);
                            //await UserManager.SendEmailAsync(user.Id, "You are invited", "Hi,<br>You are invited. Please accept the invitation by clicking <a href=\"" + callbackUrl + "\">here</a>");
                            await Mailer.Execute("You are invited", Model.Email, Model.FirstName + " " + Model.LastName, "Hi,<br>You are invited. Please accept the invitation by clicking <a href=\"" + callbackUrl + "\">here</a><br><br>Thanks.");

                            return(RedirectToAction("Login"));
                        }
                        catch (Exception ex)
                        {
                            LogRepository.LogException(ex);
                        }
                    }
                //invitation sent. reset model, so that new use can be invited
                Model = new InviteUserModel()
                {
                    IsInvitationSent = true
                };
                return(View(Model));
            }

            // If we got this far, something failed, redisplay form
            return(View(Model));
        }
Esempio n. 11
0
        public async Task <ActionResult> Register(RegisterViewModel Model)
        {
            var isAdmin = string.IsNullOrWhiteSpace(Model.InvitationCode);

            //if it is invited user, then company name will be null. Fill it to avoid false model error
            if (!isAdmin)
            {
                Model.CompanyDetails.CompanyName = "Company Name";
            }

            if (ModelState.IsValid)
            {
                AspNetUsers   aspNetUser         = new AspNetUsers();
                SiteUsers     siteUser           = new SiteUsers();
                SiteCompanies company            = new SiteCompanies();
                bool?         invitationAccepted = null;

                using (ePontiv2Entities db = new ePontiv2Entities())
                    using (TransactionScope tran = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                    {
                        CommonRepository repo = new CommonRepository(db);

                        //Site Company
                        if (!isAdmin)
                        {
                            aspNetUser = db.AspNetUsers.AsNoTracking().Where(p => p.InvitationCode == Model.InvitationCode && p.InvitationAccepted != true).FirstOrDefault();
                            if (aspNetUser == null)
                            {
                                ModelState.AddModelError("", "Invitation code invalid or expired.");
                                return(View(Model));
                            }

                            siteUser = db.SiteUsers.Where(p => p.ASPNetUserID == aspNetUser.Id).FirstOrDefault();
                            if (siteUser == null)
                            {
                                ModelState.AddModelError("", "Invitation code invalid or expired.");
                                return(View(Model));
                            }

                            company = db.SiteCompanies.Where(p => p.SiteCoID == siteUser.SiteCoID).FirstOrDefault();
                            if (company == null)
                            {
                                ModelState.AddModelError("", "Invitation code invalid or expired.");
                                return(View(Model));
                            }

                            invitationAccepted             = true;
                            Model.CompanyDetails.CompanyID = company.SiteCoID;
                        }
                        else
                        {
                            #region Add New Company

                            var co = Model.CompanyDetails;

                            int status = repo.AddNewSiteCompany(new SiteCompanies()
                            {
                                CoName     = co.CompanyName,
                                CoAddress1 = co.Address1,
                                CoAddress2 = co.Address2,
                                CoCity     = co.City,
                                CoState    = co.State,
                                CoZip      = co.Zip,
                                CoCountry  = co.Country,
                                CoPhone    = co.Phone
                            });

                            if (status == -1)
                            {
                                ModelState.AddModelError("", "Company already registered. Please contact your company for invitation.");
                                return(View(Model));
                            }

                            Model.CompanyDetails.CompanyID = status;
                            db.InsertNewCoData(status);
                            db.SaveChanges();

                            //db.InsertFirstLicense(status,DateTime.Now,d)
                            #endregion
                        }

                        //ASP Net User
                        var emailAlreadyExists = db.AspNetUsers.Where(p => p.Email == Model.Email && //check for same email
                                                                      p.Id != aspNetUser.Id) // ignore user's own email - in case for invited user
                                                 .Any();
                        if (emailAlreadyExists)
                        {
                            ModelState.AddModelError("", "Email already registered.");
                            return(View(Model));
                        }

                        string aspNetUserID;
                        if (isAdmin)
                        {
                            var user = new ApplicationUser
                            {
                                UserName    = Model.Email,
                                Email       = Model.Email,
                                PhoneNumber = Model.Phone,
                                //siteuserid = Model.CompanyDetails.CompanyID
                            };

                            var userCreateStatus = await UserManager.CreateAsync(user, Model.Password);

                            if (userCreateStatus.Succeeded == false)
                            {
                                AddErrors(userCreateStatus);
                                return(View(Model));
                            }

                            aspNetUserID = user.Id;

                            //var roleStore = new Microsoft.AspNet.Identity.EntityFramework.RoleStore<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>(context);
                            //var roleManager = new RoleManager<IdentityRole>(roleStore);

                            // UserManager.AddToRole(aspNetUserID, EnumWrapper.SiteUserRoles.admin.ToString());
                            await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                            db.InsertFirstUserBySiteID(Model.CompanyDetails.CompanyID, user.Id, string.Format("{0} {1}", Model.FirstName, Model.LastName), Model.FirstName, Model.LastName, "", user.Email, user.PasswordHash, user.SecurityStamp, user.PhoneNumber);
                            db.SaveChanges();
                        }
                        else
                        {
                            aspNetUserID           = aspNetUser.Id;
                            aspNetUser.UserName    = Model.Email;
                            aspNetUser.Email       = Model.Email;
                            aspNetUser.PhoneNumber = Model.Phone;

                            UserManager.AddToRole(aspNetUserID, EnumWrapper.SiteUserRoles.user.ToString());

                            //set password
                            string passwordResetCode = await UserManager.GeneratePasswordResetTokenAsync(aspNetUserID);

                            var result = await UserManager.ResetPasswordAsync(aspNetUserID, passwordResetCode, Model.Password);

                            if (!result.Succeeded)
                            {
                                ModelState.AddModelError("", "Some error occurred. Please retry.");
                                return(View(Model));
                            }


                            await SignInManager.SignInAsync(UserManager.FindById(aspNetUserID), isPersistent : false, rememberBrowser : false);
                        }


                        //site user
                        //if (isAdmin)
                        //{
                        //    siteUser = new SiteUsers();
                        //    db.SiteUsers.Add(siteUser);
                        //}
                        if (!isAdmin)
                        {
                            siteUser.ASPNetUserID    = aspNetUserID;
                            siteUser.SiteCoID        = Model.CompanyDetails.CompanyID;
                            siteUser.UserFirstName   = Model.FirstName;
                            siteUser.UserLastName    = Model.LastName;
                            siteUser.UserDisplayName = string.Format("{0} {1}", Model.FirstName, Model.LastName);
                            siteUser.UserStatus      = "Active";
                            siteUser.TimeZoneID      = 1;

                            db.SaveChanges();

                            aspNetUser = db.AspNetUsers.Where(p => p.Id == aspNetUserID).FirstOrDefault();
                            if (aspNetUser != null)
                            {
                                aspNetUser.siteuserid = siteUser.SiteUserID;
                                aspNetUser.sitecoid   = siteUser.SiteCoID ?? 0;
                                if (invitationAccepted.HasValue)
                                {
                                    aspNetUser.InvitationAccepted = invitationAccepted;
                                }
                                db.SaveChanges();
                            }
                        }

                        tran.Complete();

                        // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                        // Send an email with this link
                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                        //return RedirectToAction("Index", "Home");
                    }
                if (isAdmin)
                {
                    return(RedirectToAction("Welcome"));
                }
                else
                {
                    return(RedirectToAction("Index", "Dashboard", new { area = "Sections" }));
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(Model));
        }