public AuthorizeLogOnDTO RetrieveUserInformation(string userName, string domainName = "")
        {
            var aDPath = ConfigurationManager.AppSettings["EmployeeADPath"];
            var searchString = ConfigurationManager.AppSettings["EmployeeSearchString"];

            AuthorizeLogOnDTO returnValue = null;
            var results = SearchForADUserInfo(string.Format(CultureInfo.CurrentCulture, searchString, userName), aDPath);
            if (results.Count > 0)
            {
                var result = results[0];
                returnValue = new AuthorizeLogOnDTO();
                returnValue.LastName = GetPropertyString(result, "sn");
                returnValue.FirstName = GetPropertyString(result, "givenname");
                returnValue.UserName = userName;
                returnValue.Location = GetPropertyString(result, "physicalDeliveryOfficeName");
                returnValue.Department = GetPropertyString(result, "department");
                returnValue.EmailAddress = GetPropertyString(result, "mail");
                var managerDistinguishedName = GetPropertyString(result, "manager");
                if (managerDistinguishedName != string.Empty)
                {
                    var managerResults = SearchForADUserInfo(string.Format(CultureInfo.CurrentCulture, "(&(objectCategory=Person)(objectClass=user)(distinguishedname={0}))", managerDistinguishedName), aDPath);
                    if (managerResults.Count > 0)
                    {
                        returnValue.Manager1ADName = GetPropertyString(managerResults[0], "samaccountname");
                    }
                }
            }
            return returnValue;
        }
        public CustomIdentityDTO SaveIdentity(AuthorizeLogOnDTO customIdentity)
        {
            using (var ctx = new Entities())
            {
                ctx.Database.Connection.Open();
                var employee = ctx.Employees.SingleOrDefault(e => e.ADName == customIdentity.UserName);
                if (employee == null)
                {
                    employee = new Employee();
                    LoadEmployee(employee, customIdentity);
                    employee.AwardPayoutThreshold = EmployeeConstants.DefaultAwardPayoutThreshold;
                    ctx.Employees.Add(employee);
                }
                else
                {
                    LoadEmployee(employee, customIdentity);
                }
                ctx.SaveChanges();

                AttachAndSavePermission(ctx, employee.EmployeeId, Common.Enums.PermissionType.User);

                return new CustomIdentityDTO
                {
                    Id = employee.EmployeeId,
                    ADName = employee.ADName
                };
            }
        }
 public void SaveManagerInfo(AuthorizeLogOnDTO customIdentity)
 {
     using (var ctx = new Entities())
     {
         ctx.Database.Connection.Open();
         var employee = ctx.Employees.SingleOrDefault(e => e.ADName == customIdentity.UserName);
         if (employee != null)
         {
             var manager1 = ctx.Employees.SingleOrDefault(e => e.ADName == customIdentity.Manager1ADName);
             if (manager1 != null)
             {
                 employee.ApprovingManagerId1 = manager1.EmployeeId;
             }
             var manager2 = ctx.Employees.SingleOrDefault(e => e.ADName == customIdentity.Manager2ADName);
             if (manager2 != null)
             {
                 employee.ApprovingManagerId2 = manager2.EmployeeId;
             }
         }
         ctx.SaveChanges();
     }
 }
 private void LoadEmployee(Employee employee, AuthorizeLogOnDTO customIdentity)
 {
     employee.ADName = customIdentity.UserName;
     employee.FirstName = customIdentity.FirstName;
     employee.LastName = customIdentity.LastName;
     employee.EmploymentStartDate = customIdentity.EmployementStartDate;
     employee.EmploymentEndDate = customIdentity.EmployementEndDate;
 }