Example #1
0
        public static IEnumerable <SelectListItem> GetManagers(int businessId)
        {
            var model = new List <SelectListItem>();

            try
            {
                using (var db = new CareConnectCrmEntities())
                {
                    //model = new SelectList(db.Users.Where(a => a.BusinessId == businessId && a.IsActive == true && a.Roles.Select(b => b.Name.Replace(" ", "").ToLower()).Contains("salesmanager")).OrderBy(a => a.FirstName).Select(s => new
                    model = new SelectList(db.Users.Where(a => a.BusinessId == businessId && a.IsActive == true).OrderBy(a => a.FirstName).Select(s => new
                    {
                        Id       = s.Id,
                        UserName = s.FirstName + " " + s.LastName
                    }), "Id", "UserName").ToList();
                }
            }
            catch (Exception ex)
            {
                ex.Log();
            }
            finally
            {
            }

            return(model);
        }
Example #2
0
        public ActionResult Index()
        {
            var errMsg = TempData["ErrorMessage"] as string;

            ModelState.AddModelError("", errMsg);
            if (User.Identity.IsAuthenticated)
            {
                var GmEntity    = new CareConnectCrmEntities();
                var userDetails = GmEntity.Users.FirstOrDefault(a => a.UserName == User.Identity.Name);
                if (userDetails != null)
                {
                    if (userDetails.Roles.Any(y => y.Name == "SuperAdmin"))
                    {
                        Response.Redirect("/Admin");
                    }
                    else
                    {
                        Response.Redirect(userDetails.BusinessMaster.RelativeUrl);
                    }
                }
                else
                {
                    return(RedirectToAction("Logout", "Account"));
                }
            }

            return(View());
        }
Example #3
0
        public static IEnumerable <SelectListItem> GetSalesDirectors(int businessId)
        {
            var model = new List <SelectListItem>();

            try
            {
                using (var db = new CareConnectCrmEntities())
                {
                    model = new SelectList(db.Users.Where(a => a.BusinessId == businessId && a.IsActive == true &&
                                                          !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") &&
                                                          !a.Roles.Select(y => y.Name).Contains("SuperAdmin") &&
                                                          !a.Roles.Select(y => y.Name).Contains("MasterAdmin") &&
                                                          (a.Roles.Any(r => r.RolePrivileges.Any(rp => rp.Privilege.PrivilegeKey == "MNGALLSLSTMS")) ||
                                                           a.UserPrivileges2.Any(b => b.Privilege.PrivilegeKey == "MNGALLSLSTMS")))
                                           .Select(s => new
                    {
                        Id       = s.Id,
                        UserName = s.FirstName + " " + s.LastName
                    }).OrderBy(a => a.UserName), "Id", "UserName").ToList();
                }
            }
            catch (Exception ex)
            {
                ex.Log();
            }
            finally
            {
            }

            return(model);
        }
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            var isAuthorized = base.AuthorizeCore(httpContext);

            if (!isAuthorized)
            {
                return(false);
            }
            UserDetailsModel userModel = null;

            if (httpContext.Session["currentUserModel"] != null)
            {
                userModel = (UserDetailsModel)httpContext.Session["currentUserModel"];
            }
            else
            {
                var db            = new CareConnectCrmEntities();
                var currentUserId = httpContext.User.Identity.GetUserId <int>();

                var query = db.Users.Where(a => a.Id == currentUserId);

                userModel = query
                            .Select(currentUser => new UserDetailsModel
                {
                    Id           = currentUser.Id,
                    FirstName    = currentUser.FirstName,
                    MiddleName   = currentUser.MiddleName,
                    LastName     = currentUser.LastName,
                    BusinessId   = currentUser.BusinessId,
                    Email        = currentUser.Email,
                    PhoneNumber  = currentUser.PhoneNumber,
                    UserName     = currentUser.UserName,
                    BusinessName = currentUser.BusinessMaster.BusinessName,
                    RelativeUrl  = currentUser.BusinessMaster.RelativeUrl,
                    OtherEmails  = currentUser.BusinessMaster.OtherEmails,
                    IRoles       = currentUser.Roles,
                    IDepartments = currentUser.UserDepartments
                }).FirstOrDefault();
                var profileRepository = new RepositoryUserProfile();

                userModel.UserPrivileges = profileRepository.GetUserPrivilages(userModel.Id);

                httpContext.Session["currentUserModel"] = userModel;
            }

            if (userModel.BusinessId == null || userModel.BusinessId == 0)
            {
                httpContext.Items["CurrentUser"]         = userModel;
                httpContext.Items["CurrentBusinessName"] = userModel.BusinessName;
                return(false);
            }

            httpContext.Items["CurrentUser"]         = userModel;
            httpContext.Items["CurrentBusinessName"] = userModel.BusinessName;

            return(true);
        }
Example #5
0
        //[BusinessAuthorize]
        public ActionResult Business()
        {
            var errMsg = TempData["ErrorMessage"] as string;

            ModelState.AddModelError("", errMsg);
            var db = new CareConnectCrmEntities();

            ViewBag.version = ConfigurationManager.AppSettings["AppVersion"] ?? "1.0";

            if (RouteData.Values["businessname"] != null)
            {
                var businussUrl = RouteData.Values["businessname"].ToString();
                var business    = db.BusinessMasters.FirstOrDefault(a => a.RelativeUrl.ToLower() == businussUrl.Replace(" ", "-").ToLower());

                if (business != null)
                {
                    ViewBag.DefaultDateRange = business.DateRange ?? 3;
                }

                if (business == null)
                {
                    return(RedirectToAction("NoPermission", new { title = "" }));
                }

                if (User.Identity.IsAuthenticated)
                {
                    if (db.Users.Count(a => a.UserName == User.Identity.Name && a.BusinessId == business.Id) == 0 || business == null)
                    {
                        return(RedirectToAction("NoPermission", new { title = business.BusinessName }));
                    }
                }

                //if (!User.Identity.IsAuthenticated) { return RedirectToAction("Login", "Account", new { returnUrl="/"+BusinussUrl }); }
                if (business != null)
                {
                    //check in db if biz url exists if so load business object and pass to view
                    //if business doest not exists go to business login
                    ViewBag.businessName = business.BusinessName;
                    ViewBag.Logo         = "/Assets/" + business.Id + "/Logo_" + business.Id + ".jpg";
                    ViewBag.RelativeUrl  = business.RelativeUrl;
                    ViewBag.Title        = "Home Page";
                    return(View());
                }
                else
                {
                    return(RedirectToAction("BusinessContact", new { title = ViewBag.businessName }));
                }
            }
            return(View());
        }
Example #6
0
        public static IEnumerable <SelectListItem> GetAllBusiness()
        {
            var model = new List <SelectListItem>();

            try
            {
                using (var db = new CareConnectCrmEntities())
                {
                    model = new SelectList(db.BusinessMasters.OrderBy(a => a.BusinessName), "Id", "BusinessName").ToList();
                }
            }
            catch (Exception ex)
            {
                ex.Log();
            }
            finally
            {
            }

            return(model);
        }
Example #7
0
        public static IEnumerable <SelectListItem> GetRepGroups(int businessId)
        {
            var model = new List <SelectListItem>();

            try
            {
                using (var db = new CareConnectCrmEntities())
                {
                    model = new SelectList(db.RepGroups.Where(a => a.BusinessId == businessId).OrderBy(a => a.RepGroupName), "Id", "RepGroupName").ToList();
                }
            }
            catch (Exception ex)
            {
                ex.Log();
            }
            finally
            {
            }

            return(model);
        }
        protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            return(true);

            #region Unreachable Code Block

            var userName = "";
            if (actionContext.Request.Headers.GetValues("User") != null)
            {
                var userNameHeader = actionContext.Request.Headers.GetValues("User");
                userName = userNameHeader.FirstOrDefault();
            }
            else
            {
                var isAuthorized = base.IsAuthorized(actionContext);

                if (!isAuthorized)
                {
                    //if (actionContext.Request.Headers.GetValues("User") != null)
                    //{
                    //   var userNameHeader = actionContext.Request.Headers.GetValues("User");
                    //   userName = userNameHeader.FirstOrDefault();

                    //TODO: //add additional security validation cases
                    //    goto userLoggedIn;
                    //}

                    return(false);
                }
            }
userLoggedIn:


            var httpContext = HttpContext.Current;

            if (httpContext.Items["CurrentUser"] != null)
            {
            }

            var db = new CareConnectCrmEntities();
            // var currentUserId = httpContext.User.Identity.GetUserId<int>();
            var query = db.Users.Where(a => a.UserName == userName);
            if (userName == "")
            {
                query = db.Users.Where(a => a.UserName == httpContext.User.Identity.Name);
            }

            var userModel = query
                            .Select(currentUser => new UserDetailsModel
            {
                Id           = currentUser.Id,
                FirstName    = currentUser.FirstName,
                MiddleName   = currentUser.MiddleName,
                LastName     = currentUser.LastName,
                BusinessId   = currentUser.BusinessId,
                Email        = currentUser.Email,
                PhoneNumber  = currentUser.PhoneNumber,
                UserName     = currentUser.UserName,
                BusinessName = currentUser.BusinessMaster.BusinessName,
                RelativeUrl  = currentUser.BusinessMaster.RelativeUrl,
                OtherEmails  = currentUser.BusinessMaster.OtherEmails,
                IRoles       = currentUser.Roles,
                IDepartments = currentUser.UserDepartments
            }).FirstOrDefault();

            var profileRepository = new RepositoryUserProfile();

            //userModel.Roles = profileRepository.GetAllUserRoles(userModel.Id).Model.ToNameArray(); //new string[] { "MasterAdmin", "SuperAdmin" };
            //userModel.Departments = profileRepository.GetAllUserDepartments(userModel.Id).Model.ToNameArray();

            if (userModel.BusinessId == null || userModel.BusinessId == 0)
            {
                httpContext.Items["CurrentUser"]         = userModel;
                httpContext.Items["CurrentBusinessName"] = userModel.BusinessName;
                return(false);
            }

            userModel.UserPrivileges                 = profileRepository.GetUserPrivilages(userModel.Id);
            httpContext.Items["CurrentUser"]         = userModel;
            httpContext.Items["CurrentBusinessName"] = userModel.BusinessName;

            return(true);

            #endregion
        }
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            var isAuthorized = base.AuthorizeCore(httpContext);

            if (!isAuthorized)
            {
                return(false);
            }

            UserDetailsModel userModel = null;

            if (HttpRuntime.Cache[httpContext.User.Identity.Name] != null)
            {
                userModel = (UserDetailsModel)HttpRuntime.Cache[httpContext.User.Identity.Name];
            }
            else
            {
                var db = new CareConnectCrmEntities();
                // var currentUserId = httpContext.User.Identity.GetUserId<int>();

                userModel = db.Users.Where(a => a.UserName == httpContext.User.Identity.Name).Select(currentUser => new UserDetailsModel
                {
                    Id           = currentUser.Id,
                    FirstName    = currentUser.FirstName,
                    MiddleName   = currentUser.MiddleName,
                    LastName     = currentUser.LastName,
                    BusinessId   = currentUser.BusinessId,
                    Email        = currentUser.Email,
                    PhoneNumber  = currentUser.PhoneNumber,
                    UserName     = currentUser.UserName,
                    BusinessName = currentUser.BusinessMaster.BusinessName,
                    RelativeUrl  = currentUser.BusinessMaster.RelativeUrl,
                    IRoles       = currentUser.Roles,
                    IDepartments = currentUser.UserDepartments,
                    OtherEmails  = currentUser.BusinessMaster.OtherEmails,
                    LogoUrl      = currentUser.BusinessMaster.Logo
                }).FirstOrDefault();

                var profileRepository = new RepositoryUserProfile();

                if (userModel.BusinessId == null || userModel.BusinessId == 0)
                {
                    httpContext.Items["CurrentUser"]         = userModel;
                    httpContext.Items["CurrentUserName"]     = userModel.FirstName + " " + userModel.LastName;
                    httpContext.Items["CurrentBusinessName"] = userModel.BusinessName.Replace(" ", "-");
                    return(false);
                }

                userModel.UserPrivileges = profileRepository.GetUserPrivilages(userModel.Id);

                HttpRuntime.Cache[httpContext.User.Identity.Name] = userModel;
            }
            if (!userModel.Roles.Contains("BusinessAdmin"))
            {
                if (!userModel.UserPrivileges.Contains("RDSETTINGS"))
                {
                    return(false);
                }
            }

            httpContext.Items["CurrentUser"]         = userModel;
            httpContext.Items["CurrentUserName"]     = userModel.FirstName + " " + userModel.LastName;
            httpContext.Items["CurrentBusinessName"] = userModel.BusinessName.Replace(" ", "-");

            return(true);
        }
        public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            var httpContext = HttpContext.Current;

            if (!httpContext.User.Identity.IsAuthenticated)
            {
                throw new HttpException(403, "Access Denied");
            }

            var userName = httpContext.User.Identity.Name;

            //if (actionContext.Request.Headers.GetValues("User") != null)
            //{
            //    var userNameHeader = actionContext.Request.Headers.GetValues("User");
            //    userName = userNameHeader.FirstOrDefault();
            //    var genericPrincipal = new System.Security.Principal.GenericPrincipal(new System.Security.Principal.GenericIdentity(userName), null);
            //    actionContext.RequestContext.Principal = genericPrincipal;
            //}

            UserDetailsModel userModel = null;

            if (HttpRuntime.Cache[httpContext.User.Identity.Name] != null)
            {
                userModel = (UserDetailsModel)HttpRuntime.Cache[httpContext.User.Identity.Name];
            }
            else
            {
                var db = new CareConnectCrmEntities();
                // var currentUserId = httpContext.User.Identity.GetUserId<int>();
                var query = db.Users.Where(a => a.UserName == userName);
                if (userName == "" && httpContext.User.Identity.IsAuthenticated)
                {
                    query = db.Users.Where(a => a.UserName == httpContext.User.Identity.Name);
                }

                userModel = query
                            .Select(currentUser => new UserDetailsModel
                {
                    Id               = currentUser.Id,
                    FirstName        = currentUser.FirstName,
                    MiddleName       = currentUser.MiddleName,
                    LastName         = currentUser.LastName,
                    BusinessId       = currentUser.BusinessId,
                    Email            = currentUser.Email,
                    PhoneNumber      = currentUser.PhoneNumber,
                    UserName         = currentUser.UserName,
                    BusinessName     = currentUser.BusinessMaster.BusinessName,
                    DomainUrl        = currentUser.BusinessMaster.DomainUrl,
                    RelativeUrl      = currentUser.BusinessMaster.RelativeUrl,
                    OtherEmails      = currentUser.BusinessMaster.OtherEmails,
                    IsRep            = currentUser.Reps2.Any(),
                    IsSalesManager   = currentUser.RepgroupManagerMappers.Any(),
                    DefaultDateRange = currentUser.BusinessMaster.DateRange,
                    IRoles           = currentUser.Roles,
                    IDepartments     = currentUser.UserDepartments,
                    SalesGroupBy     = currentUser.BusinessMaster.SalesGroupBy,
                    LogoUrl          = currentUser.BusinessMaster.Logo
                }).FirstOrDefault();

                var profileRepository = new RepositoryUserProfile();

                userModel.UserPrivileges = profileRepository.GetUserPrivilages(userModel.Id);

                HttpRuntime.Cache[httpContext.User.Identity.Name] = userModel;
            }
            if (userModel.BusinessId == null || userModel.BusinessId == 0)
            {
                httpContext.Items["CurrentUser"]         = userModel;
                httpContext.Items["CurrentBusinessName"] = userModel.BusinessName;
                return;
            }

            httpContext.Items["CurrentUser"]         = userModel;
            httpContext.Items["CurrentBusinessName"] = userModel.BusinessName;
        }
Example #11
0
 /// <summary>
 /// Initializes DB Connection
 /// </summary>
 public void DBInit()
 {
     this._dBEntity = new CareConnectCrmEntities();
 }
Example #12
0
        public async Task <ActionResult> Index(ViewModel model)
        {
            int businessId    = model.BusinessId,
                currentUserId = CurrentUser.Id;

            if (ModelState.IsValid)
            {
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    model.File.InputStream.CopyTo(memoryStream);
                }

                if (model.File != null)
                {
                    string filePath = Server.MapPath(Path.Combine("~/Assets", businessId.ToString(), "Sales", "Sales-Archives", "Uploads", "Imports"));
                    if (!Directory.Exists(filePath))
                    {
                        Directory.CreateDirectory(filePath);
                    }
                    string excelFile = Path.Combine(filePath, string.Format("{0}.{1}", DateTime.Now.ToString("MMddyyhhmmssttfff"), "xlsx"));

                    model.File.SaveAs(excelFile);

                    int         RecordCount;
                    XmlDocument xmlDocument = new XmlDocument();
                    using (StreamReader sr = new StreamReader(excelFile))
                    {
                        Stream ExcelStream = sr.BaseStream;
                        xmlDocument.LoadXml(new ExcelToXml().GetXMLString(ref ExcelStream, true, out RecordCount));
                        IEnumerable <XElement> xElements = xmlDocument.ToXDocument().Descendants("RowItem");

                        var accountData = xElements.Select(u =>
                                                           new AccountModel
                        {
                            PracticeName      = (string)u.Element("PracticeName"),
                            AddressLine1      = (string)u.Element("AddressLine1"),
                            AddressLine2      = (string)u.Element("AddressLine2"),
                            City              = (string)u.Element("City"),
                            State             = (string)u.Element("State"),
                            ZipCode           = (string)u.Element("ZipCode"),
                            PhoneNumber       = (string)u.Element("PhoneNumber"),
                            ReportDeliveryFax = (string)u.Element("ReportDeliveryFax"),
                            EnrolledServices  = (string)u.Element("EnrolledServices"),
                            NPI       = (string)u.Element("NPI"),
                            SalesTeam = (string)u.Element("SalesTeam"),
                            SalesRep  = (string)u.Element("SalesRep"),
                        });

                        foreach (var item in accountData)
                        {
                            try
                            {
                                using (CareConnectCrmEntities DBEntity = new CareConnectCrmEntities())
                                {
                                    #region Genrarate PracticeProviderMapper

                                    List <PracticeProviderMapper> oPracticeProviderMappers = new List <PracticeProviderMapper>();
                                    var provider   = DBEntity.Providers.FirstOrDefault(a => a.NPI == item.NPI);
                                    int providerId = provider != null ? provider.Id : 0;
                                    if (providerId > 0)
                                    {
                                        oPracticeProviderMappers.Add(new PracticeProviderMapper
                                        {
                                            AddressIndex = 1,
                                            ProviderId   = providerId,
                                            CreatedBy    = currentUserId,
                                            CreatedOn    = DateTime.UtcNow
                                        });
                                        item.HasProvider = true;
                                    }
                                    else
                                    {
                                        dynamic obj = null;
                                        using (HttpClient httpClient = new HttpClient())
                                        {
                                            var json = await GetObjectsAsync(item.NPI);

                                            var serializer = new JavaScriptSerializer();
                                            serializer.RegisterConverters(new[] { new DynamicJsonConverter() });

                                            obj = serializer.Deserialize(json.ToString(), typeof(object));
                                        }

                                        int resultCount = 0;
                                        var s           = obj.result_count;
                                        int.TryParse(Convert.ToString(obj.result_count), out resultCount);
                                        if (resultCount > 0)
                                        {
                                            oPracticeProviderMappers.Add(new PracticeProviderMapper
                                            {
                                                AddressIndex = 1,
                                                Provider     = new Provider
                                                {
                                                    FirstName  = obj.results[0].basic.first_name,
                                                    MiddleName = obj.results[0].basic.middle_name,
                                                    LastName   = obj.results[0].basic.last_name,
                                                    IsActive   = true,
                                                    NPI        = item.NPI,
                                                    CreatedBy  = currentUserId,
                                                    CreatedOn  = DateTime.UtcNow,
                                                },
                                                CreatedBy = currentUserId,
                                                CreatedOn = DateTime.UtcNow
                                            });
                                            item.HasProvider = true;
                                        }
                                    }

                                    #endregion

                                    #region Genrarate PracticeServiceMapper

                                    List <PracticeServiceMapper> oPracticeServiceMapper = new List <PracticeServiceMapper>();

                                    var services = DBEntity.LookupEnrolledServices.Where(a => a.BusinessId == businessId).ToList();

                                    if (services != null && services.Count() > 0)
                                    {
                                        foreach (var serviceItem in services)
                                        {
                                            oPracticeServiceMapper.Add(new PracticeServiceMapper
                                            {
                                                EnrolledServiceId = Convert.ToInt32(serviceItem.Id),
                                                CreatedBy         = currentUserId,
                                                CreatedOn         = DateTime.UtcNow
                                            });
                                        }
                                    }

                                    #endregion

                                    if (!string.IsNullOrEmpty(item.SalesRep))
                                    {
                                        string salesRep = item.SalesRep.Replace(" ", ""),
                                               repGroup = item.SalesTeam.Replace(" ", "");

                                        var objRep = DBEntity.Reps.Where(a => a.User2.BusinessId == businessId && (a.User2.FirstName.Trim() + a.User2.MiddleName.Trim() + a.User2.LastName.Trim()).Contains(salesRep) && a.RepGroup.RepGroupName.Replace(" ", "").Trim() == repGroup).ToList();
                                        if (objRep.Count == 1)
                                        {
                                            item.RepId = objRep.FirstOrDefault().Id;
                                        }
                                    }

                                    if (!string.IsNullOrEmpty(item.State))
                                    {
                                        string stateCode = item.State.Trim();
                                        var    objState  = DBEntity.LookupStates.Where(a => a.StateCode == stateCode).ToList();
                                        if (objState.Count == 1)
                                        {
                                            item.StateId = objState.FirstOrDefault().Id;
                                        }
                                    }

                                    if (item.RepId <= 0 || item.StateId <= 0 || !item.HasProvider.HasValue)
                                    {
                                        //if (!TryValidateModel(item))
                                        //{
                                        model.FailedRecords.Add(item);
                                        continue;
                                        //}
                                    }

                                    #region Accounts

                                    var accountModel = new Account
                                    {
                                        IsActive   = true,
                                        BusinessId = businessId,
                                        Lead       = new Lead
                                        {
                                            IsConverted = true,
                                            IsActive    = true,
                                            RepId       = item.RepId,
                                            LeadStatus  = (int)LeadStatus.Transacted,
                                            BusinessId  = businessId,
                                            Practice    = new Practice
                                            {
                                                ReportDeliveryFax      = item.ReportDeliveryFax,
                                                RepId                  = item.RepId,
                                                PracticeName           = item.PracticeName,
                                                BusinessId             = businessId,
                                                PracticeAddressMappers = new List <PracticeAddressMapper> {
                                                    new PracticeAddressMapper
                                                    {
                                                        Address = new Address
                                                        {
                                                            AddressIndex  = 1,
                                                            Line1         = item.AddressLine1,
                                                            Line2         = item.AddressLine2,
                                                            City          = item.City,
                                                            Zip           = item.ZipCode,
                                                            AddressTypeId = (int)AddressType.Primary,
                                                            StateId       = item.StateId.HasValue ? item.StateId.Value : 0,
                                                            CreatedBy     = currentUserId,
                                                            CreatedOn     = DateTime.UtcNow,
                                                            Phones        = new List <Phone>
                                                            {
                                                                new Phone
                                                                {
                                                                    PhoneNumber = item.PhoneNumber,
                                                                    PhoneTypeId = 1,
                                                                    CreatedOn   = DateTime.UtcNow,
                                                                    CreatedBy   = currentUserId
                                                                }
                                                            },
                                                        },
                                                        CreatedBy = currentUserId,
                                                        CreatedOn = DateTime.UtcNow,
                                                    }
                                                },
                                                PracticeProviderMappers = oPracticeProviderMappers,
                                                PracticeServiceMappers  = oPracticeServiceMapper,
                                                CreatedOn = DateTime.UtcNow,
                                                CreatedBy = currentUserId
                                            },
                                            CreatedOn = DateTime.UtcNow,
                                            CreatedBy = currentUserId
                                        },
                                        CreatedOn = DateTime.UtcNow,
                                        CreatedBy = currentUserId
                                    };

                                    accountModel = DBEntity.Accounts.Add(accountModel);

                                    #endregion

                                    if (DBEntity.SaveChanges() > 0)
                                    {
                                        #region Practice Provider Address Mapper

                                        accountModel.Lead.Practice.PracticeProviderMappers.ToList().ForEach(s =>
                                                                                                            DBEntity.PracticeProviderLocationMappers.Add(new PracticeProviderLocationMapper
                                        {
                                            PracticeId = accountModel.Lead.Practice.Id,
                                            ProviderId = s.ProviderId,
                                            AddressId  = s.Practice.PracticeAddressMappers
                                                         .FirstOrDefault(f => f.Address.AddressIndex == s.Practice.PracticeProviderMappers
                                                                         .FirstOrDefault(d => d.Provider.Id == s.ProviderId).AddressIndex).AddressId,
                                            CreatedBy = currentUserId,
                                            CreatedOn = DateTime.UtcNow
                                        }));

                                        #endregion

                                        DBEntity.SaveChanges();
                                    }
                                    else
                                    {
                                        model.FailedRecords.Add(item);
                                    }
                                }
                            }
                            catch (System.Data.Entity.Validation.DbEntityValidationException e)
                            {
                                foreach (var eve in e.EntityValidationErrors)
                                {
                                    foreach (var ve in eve.ValidationErrors)
                                    {
                                        string s = string.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                model.FailedRecords.Add(item);
                                ex.Log();
                            }
                        }

                        ExcelStream.Close();
                    };
                }
            }
            return(View(model));
        }
Example #13
0
        public override void OnAuthorization(HttpActionContext actionContext)
        {
            var httpContext = HttpContext.Current;
            var userName    = "";

            if (actionContext.Request.Headers.Any(a => a.Key == "User") && actionContext.Request.Headers.GetValues("User") != null)
            {
                var userNameHeader = actionContext.Request.Headers.GetValues("User");
                userName = userNameHeader.FirstOrDefault();
                IPrincipal genericPrincipal = new GenericPrincipal(new GenericIdentity(userName), null);
                actionContext.RequestContext.Principal = genericPrincipal;
            }

            if (httpContext.User.Identity.Name == "")
            {
                return;
            }

            var db = new CareConnectCrmEntities();
            // var currentUserId = httpContext.User.Identity.GetUserId<int>();
            var query = db.Users.Where(a => a.UserName == httpContext.User.Identity.Name);

            if (userName == "" && httpContext.User.Identity.IsAuthenticated)
            {
                query = db.Users.Where(a => a.UserName == httpContext.User.Identity.Name);
            }

            var userModel = db.Users.Where(a => a.UserName == httpContext.User.Identity.Name).Select(currentUser => new UserDetailsModel
            {
                Id             = currentUser.Id,
                FirstName      = currentUser.FirstName,
                MiddleName     = currentUser.MiddleName,
                LastName       = currentUser.LastName,
                BusinessId     = currentUser.BusinessId,
                Email          = currentUser.Email,
                PhoneNumber    = currentUser.PhoneNumber,
                UserName       = currentUser.UserName,
                BusinessName   = currentUser.BusinessMaster.BusinessName,
                DomainUrl      = currentUser.BusinessMaster.DomainUrl,
                RelativeUrl    = currentUser.BusinessMaster.RelativeUrl,
                OtherEmails    = currentUser.BusinessMaster.OtherEmails,
                IsRep          = currentUser.Reps2.Any(),
                IsSalesManager = currentUser.RepgroupManagerMappers.Any(),
                IRoles         = currentUser.Roles,
                IDepartments   = currentUser.UserDepartments
            }).FirstOrDefault();

            if (userModel == null)
            {
                return;
            }

            var profileRepository = new RepositoryUserProfile();

            if (userModel.BusinessId == null || userModel.BusinessId == 0)
            {
                httpContext.Items["CurrentUser"]         = userModel;
                httpContext.Items["CurrentBusinessName"] = userModel.BusinessName;
                return;
            }

            userModel.UserPrivileges = profileRepository.GetUserPrivilages(userModel.Id);

            httpContext.Items["CurrentUser"]         = userModel;
            httpContext.Items["CurrentBusinessName"] = userModel.BusinessName;
        }
        public async Task <IHttpActionResult> ObtainBearerTokenCookie(string userName)
        {
            GMUser user = null;

            var db = new CareConnectCrmEntities();
            // var currentUserId = httpContext.User.Identity.GetUserId<int>();
            var query = db.Users.Where(a => a.UserName == userName);

            var userDetails = query.Select(a => new
            {
                Id              = a.Id,
                BusinessId      = a.BusinessId,
                FirstName       = a.FirstName,
                MiddleName      = a.MiddleName,
                LastName        = a.LastName,
                UserName        = a.UserName,
                PhoneNumber     = a.PhoneNumber,
                Roles           = a.Roles.Select(r => r.Name),
                UserDepartments = a.Departments.Select(d => d.DepartmentName),
                IsRep           = a.Reps.Any(),
                BusinessName    = a.BusinessMaster.BusinessName,
                DomainUrl       = a.BusinessMaster.DomainUrl,
                RelativeUrl     = a.BusinessMaster.RelativeUrl
            }).FirstOrDefault();

            user = new GMUser
            {
                Id          = userDetails.Id,
                BusinessId  = userDetails.BusinessId,
                FirstName   = userDetails.FirstName,
                MiddleName  = userDetails.MiddleName,
                LastName    = userDetails.LastName,
                UserName    = userDetails.UserName,
                PhoneNumber = userDetails.PhoneNumber,
            };

            bool hasRegistered = user != null;

            if (!hasRegistered)
            {
                return(Ok <dynamic>(new { IsSuccess = 0, Status = HttpStatusCode.BadRequest, Message = "User is not registered!", Model = new { } }));
            }

            IPrincipal genericPrincipal = new GenericPrincipal(new GenericIdentity(userName), null);

            ActionContext.RequestContext.Principal = genericPrincipal;

            var FirstName       = user.FirstName;
            var MiddleName      = user.MiddleName;
            var LastName        = user.LastName;
            var PhoneNumber     = user.PhoneNumber;
            var UserPrivilages  = new RepositoryUserProfile().GetUserPrivilages(user.Id) ?? new string[] { };
            var UserRoles       = userDetails.Roles.ToArray();
            var UserDepartments = userDetails.UserDepartments.ToArray();

            var Business    = userDetails.BusinessName;
            var DomainUrl   = userDetails.DomainUrl;
            var RelativeUrl = userDetails.RelativeUrl;
            var IsRep       = userDetails != null ? userDetails.IsRep : false;

            //-------------------------------------------------------------------------------------------------------------------------------------------------------------------

            var            tokenExpiration = TimeSpan.FromDays(1);
            ClaimsIdentity identity        = new ClaimsIdentity(OAuthDefaults.AuthenticationType);

            identity.AddClaim(new Claim(ClaimTypes.Name, userName));
            identity.AddClaim(new Claim("role", "user"));

            var props = new AuthenticationProperties()
            {
                IssuedUtc  = DateTime.UtcNow,
                ExpiresUtc = DateTime.UtcNow.Add(tokenExpiration),
            };

            var ticket = new AuthenticationTicket(identity, props);

            var accessToken = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);

            var entityUser = new EntityUser();

            entityUser.Id         = CurrentUserId;
            entityUser.FirstName  = user.FirstName;
            entityUser.LastName   = user.LastName;
            entityUser.BusinessId = CurrentBusinessId;

            JObject tokenResponse = new JObject(
                new JProperty("FullName", entityUser.FullName),
                new JProperty("UserName", userName),
                new JProperty("FirstName", FirstName),
                new JProperty("MiddleName", MiddleName),
                new JProperty("LastName", LastName),
                new JProperty("PhoneNumber", PhoneNumber),
                new JProperty("FilePath", entityUser.FilePath),
                new JProperty("Business", Business),
                new JProperty("DomainUrl", DomainUrl),
                new JProperty("IsRep", IsRep),
                new JProperty("RelativeUrl", RelativeUrl),
                new JProperty("UserPrivilages", UserPrivilages),
                new JProperty("UserRoles", UserRoles),
                new JProperty("UserDepartments", UserDepartments),
                new JProperty("AccessToken", accessToken),
                new JProperty("TokenType", "bearer"),
                new JProperty("ExpiresIn", tokenExpiration.TotalSeconds.ToString()),
                new JProperty("IssuedDate", ticket.Properties.IssuedUtc.ToString()),
                new JProperty("ExpiresOn", ticket.Properties.ExpiresUtc.ToString()),
                new JProperty("IsProfileFilled", !string.IsNullOrEmpty(user.Email)));

            //-------------------------------------------------------------------------------------------------------------------------------------------------------------------


            //generate access token response
            // var accessTokenResponse = GenerateLocalAccessTokenResponse(user, userDetails);
            //var Db = new EmegenexBiz2016Entities();
            return(Ok <dynamic>(new { IsSuccess = 1, Status = 200, Model = tokenResponse, Message = "Success!" }));
        }