public ActionResult ImportContent(HttpPostedFileBase file, PublishTypes publishTypes)
        {
            var view = string.Format(ViewsFolder, "Index");

            if (file == null)
            {
                ModelState.AddModelError("importError", "Select a file to import");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var ic = new ImportContent {
                        PublishType = publishTypes
                    };

                    ic.Import(file);

                    view = string.Format(ViewsFolder, "ImportReport");

                    IncreaseConveyorCounter();

                    return(View(view, ic.Report));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("importError", ex.Message);
                }
            }

            return(View(view));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Parses Excel file resulted with input for processing
        /// </summary>
        /// <param name="definition"></param>
        /// <returns></returns>
        public ImportContent ParseFile(SpreadSheetRangeDefinition definition)
        {
            ImportContent content = new ImportContent()
            {
                Users = new List <User>()
            };

            List <Role> roleList = new List <Role>();
            List <FieldSecurityProfile> profiles = new List <FieldSecurityProfile>();

            var worksheet = _fileContent.Tables[definition.WorksheetName];

            // read roles
            for (int i = definition.SecurityRoles.ToTuple().Item2; i <= definition.SecurityRoles.ToTuple().Item3; i++)
            {
                roleList.Add(new Role()
                {
                    Name = worksheet.Rows[definition.SecurityRoles.ToTuple().Item1][i].ToString()
                });
            }

            // read security profiles
            for (int i = definition.FieldSecurityProfile.ToTuple().Item2; i <= definition.FieldSecurityProfile.ToTuple().Item3; i++)
            {
                profiles.Add(new FieldSecurityProfile()
                {
                    Name = worksheet.Rows[definition.FieldSecurityProfile.ToTuple().Item1][i].ToString()
                });
            }

            //parse user rows
            var startRow = definition.UserName.ToTuple().Item1 + 1;
            var endRow   = worksheet.Rows.Count;

            if (!definition.AllRows)
            {
                startRow = definition.RowsToLoad.ToTuple().Item1;
                endRow   = definition.RowsToLoad.ToTuple().Item2;
                if (endRow == 0)
                {
                    endRow = startRow + 1;
                }
            }

            if (startRow > worksheet.Rows.Count)
            {
                throw new InvalidOperationException($"Invalid row #{startRow+1} for processing. Possible row# {worksheet.Rows.Count}");
            }

            for (int i = startRow; i < endRow; i++)
            {
                User user = new User();

                for (int colCounter = definition.UserName.ToTuple().Item2; colCounter < worksheet.Columns.Count; colCounter++)
                {
                    // user name
                    if (colCounter == definition.UserName.ToTuple().Item2)
                    {
                        user.Name = worksheet.Rows[i][colCounter].ToString();

                        LogProgress($"Parsing user {user.Name}", i);
                    }
                    // manager
                    if (colCounter == definition.Manager.ToTuple().Item2)
                    {
                        user.Manager = new User
                        {
                            Name = worksheet.Rows[i][colCounter].ToString()
                        };
                        user.IsManagerIncluded = true;
                    }
                    // position
                    if (colCounter == definition.Position.ToTuple().Item2)
                    {
                        user.Position = new Position
                        {
                            Name = worksheet.Rows[i][colCounter].ToString()
                        };
                        user.IsPositionIncluded = true;
                    }
                    // site
                    if (colCounter == definition.Site.ToTuple().Item2)
                    {
                        user.Site = new Site
                        {
                            Name = worksheet.Rows[i][colCounter].ToString()
                        };
                        user.IsSiteIncluded = true;
                    }
                    // territory
                    if (colCounter == definition.Territory.ToTuple().Item2)
                    {
                        user.Territory = new Territory
                        {
                            Name = worksheet.Rows[i][colCounter].ToString()
                        };
                        user.IsTerritoryIncluded = true;
                    }
                    // bu
                    if (colCounter == definition.BusinessUnit.ToTuple().Item2)
                    {
                        user.BusinessUnit = new BusinessUnit
                        {
                            Name = worksheet.Rows[i][colCounter].ToString()
                        };
                    }
                    // security roles
                    if (colCounter >= definition.SecurityRoles.ToTuple().Item2&& colCounter <= definition.SecurityRoles.ToTuple().Item3)
                    {
                        content.RoleMemberships.Add(new RoleMembership()
                        {
                            User   = user,
                            Role   = GetRole(roleList[colCounter - definition.SecurityRoles.ToTuple().Item2], user.BusinessUnit),
                            Assign = Helper.ParseBoolean(worksheet.Rows[i][colCounter].ToString())
                        });
                    }
                    // field security profiles
                    if (colCounter >= definition.FieldSecurityProfile.ToTuple().Item2&& colCounter <= definition.FieldSecurityProfile.ToTuple().Item3)
                    {
                        content.ProfileMemberships.Add(new ProfileMembership()
                        {
                            User = user,
                            FieldSecurityProfile = profiles[colCounter - definition.FieldSecurityProfile.ToTuple().Item2],
                            Assign = Helper.ParseBoolean(worksheet.Rows[i][colCounter].ToString())
                        });
                    }
                }

                content.Users.Add(user);
            }

            return(content);
        }
        public ActionResult ImportContent(HttpPostedFileBase file, PublishTypes publishTypes)
        {
            var view = string.Format(ViewsFolder, "Index");

            if (file == null)
            {
                ModelState.AddModelError("importError", "Select a file to import");
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var ic = new ImportContent { PublishType = publishTypes };

                    ic.Import(file);

                    view = string.Format(ViewsFolder, "ImportReport");

                    IncreaseConveyorCounter();

                    return View(view, ic.Report);
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("importError", ex.Message);
                }
            }

            return View(view);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Fetches data from CE instance
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        public ImportContent FetchData(ImportContent content)
        {
            if (content.Users.Count == 0)
            {
                return(null);
            }

            LogProgress("Fetching data", 1);

            var managersFromCrm    = FetchSystemUsers(content.Users.Where(x => x.Manager != null).Select(x => x.Manager).Distinct());
            var positionsFromCrm   = FetchPositions(content.Users.Where(x => x.Position != null).Select(x => x.Position).Distinct());
            var sitesFromCrm       = FetchSites(content.Users.Where(x => x.Site != null).Select(x => x.Site).Distinct());
            var territoriesFromCrm = FetchTerritories(content.Users.Where(x => x.Territory != null).Select(x => x.Territory).Distinct());
            var buFromCrm          = FetchBusinessUnits(content.Users.Where(x => x.BusinessUnit != null).Select(x => x.BusinessUnit).Distinct());
            var usersFromCrm       = FetchSystemUsers(content.RoleMemberships.Select(x => x.User).Distinct());
            var rolesFromCrm       = FetchRoles(content.RoleMemberships.Select(x => x.Role).Distinct());
            var profilesFromCrm    = FetchFieldSecurityPofiles(content.ProfileMemberships.Select(x => x.FieldSecurityProfile).Distinct());
            var roleMemberships    = new List <RoleMembership>();
            var profileMemberships = new List <ProfileMembership>();

            LogProgress("Fetching data", 80);

            foreach (var user in content.Users)
            {
                var tempUser = usersFromCrm.FirstOrDefault(x => x.Name == user.Name);
                if (tempUser == null)
                {
                    LogWarning("User {0} is not found in Organization", user.Name);
                    continue;
                }
                else
                {
                    user.Id = tempUser.Id;
                    if (user.Manager != null)
                    {
                        var temp = managersFromCrm.FirstOrDefault(x => x.Name == user.Manager.Name);
                        if (temp == null)
                        {
                            user.IsManagerIncluded = false;
                            LogWarning("Manager {0} is not found in Organization", user.Manager.Name);
                        }
                        else
                        {
                            user.Manager = temp;
                        }
                    }
                    if (user.Position != null)
                    {
                        var temp = positionsFromCrm.FirstOrDefault(x => x.Name == user.Position.Name);
                        if (temp == null)
                        {
                            user.IsPositionIncluded = false;
                            LogWarning("Position {0} is not found in Organization", user.Position.Name);
                        }
                        else
                        {
                            user.Position = temp;
                        }
                    }
                    if (user.Site != null)
                    {
                        var temp = sitesFromCrm.FirstOrDefault(x => x.Name == user.Site.Name);
                        if (temp == null)
                        {
                            user.IsSiteIncluded = false;
                            LogWarning("Site {0} is not found in Organization", user.Position.Name);
                        }
                        else
                        {
                            user.Site = temp;
                        }
                    }
                    if (user.Territory != null)
                    {
                        var temp = territoriesFromCrm.FirstOrDefault(x => x.Name == user.Territory.Name);
                        if (temp == null)
                        {
                            user.IsTerritoryIncluded = false;
                            LogWarning("Territory {0} is not found in Organization", user.Territory.Name);
                        }
                        else
                        {
                            user.Territory = temp;
                        }
                    }
                    if (user.BusinessUnit != null)
                    {
                        var temp = buFromCrm.FirstOrDefault(x => x.Name == user.BusinessUnit.Name);
                        if (temp == null)
                        {
                            user.BusinessUnit = null;
                            LogWarning("Business Unit {0} is not found in Organization", user.BusinessUnit.Name);
                        }
                        else
                        {
                            user.BusinessUnit = temp;
                        }
                    }
                }
            }

            LogProgress("Preparing memberships", 80);
            foreach (var membership in content.RoleMemberships)
            {
                var role = membership.Role;
                var user = membership.User;
                membership.Role = rolesFromCrm.FirstOrDefault(x => x.Name.ToLower() == role.Name.ToLower() && x.BusinessUnit.Name.ToLower() == role.BusinessUnit.Name.ToLower());
                membership.User = usersFromCrm.FirstOrDefault(x => x.Name.ToLower() == user.Name.ToLower());
                if (membership.Role == null)
                {
                    LogWarning("Role {0} is not found in Organization", role.Name);
                    continue;
                }
                if (membership.User == null)
                {
                    LogWarning("User {0} is not found in Organization", user.Name);
                    continue;
                }
                roleMemberships.Add(membership);
            }

            LogProgress("Preparing memberships", 90);
            foreach (var membership in content.ProfileMemberships)
            {
                var profile = membership.FieldSecurityProfile;
                var user    = membership.User;
                membership.FieldSecurityProfile = profilesFromCrm.FirstOrDefault(x => x.Name.ToLower() == profile.Name.ToLower());
                membership.User = usersFromCrm.FirstOrDefault(x => x.Name.ToLower() == user.Name.ToLower());
                if (membership.FieldSecurityProfile == null)
                {
                    LogWarning("Field Security Profile {0} is not found in Organization", profile.Name);
                    continue;
                }
                if (membership.User == null)
                {
                    LogWarning("User {0} is not found in Organization", user.Name);
                    continue;
                }
                profileMemberships.Add(membership);
            }

            LogProgress("Preparing memberships", 100);

            return(new ImportContent
            {
                Users = content.Users,
                ProfileMemberships = profileMemberships,
                RoleMemberships = roleMemberships
            });
        }