Ejemplo n.º 1
0
        private static IEnumerable <Guid> GetOrganisationIds(OrganisationHierarchy organisationHierarchy)
        {
            var ids = new List <Guid>();

            GetOrganisationIds(ids, organisationHierarchy);
            return(ids);
        }
Ejemplo n.º 2
0
        public void TestLinearOrganisationHierarchy()
        {
            var parent     = _organisationsCommand.CreateTestVerifiedOrganisation(1, null, Guid.NewGuid());
            var child      = _organisationsCommand.CreateTestVerifiedOrganisation(2, parent, Guid.NewGuid());
            var grandchild = _organisationsCommand.CreateTestVerifiedOrganisation(3, child, Guid.NewGuid());

            var expected = new OrganisationHierarchy
            {
                Organisation = parent,
                ChildOrganisationHierarchies = new List <OrganisationHierarchy>
                {
                    new OrganisationHierarchy
                    {
                        Organisation = child,
                        ChildOrganisationHierarchies = new List <OrganisationHierarchy>
                        {
                            new OrganisationHierarchy
                            {
                                Organisation = grandchild,
                                ChildOrganisationHierarchies = new List <OrganisationHierarchy>()
                            }
                        }
                    }
                }
            };

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(parent.Id));
            AssertHierarchy(expected, _organisationsQuery.GetSubOrganisationHierarchy(parent.Id));

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(child.Id));
            AssertHierarchy(expected.ChildOrganisationHierarchies[0], _organisationsQuery.GetSubOrganisationHierarchy(child.Id));

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(grandchild.Id));
            AssertHierarchy(expected.ChildOrganisationHierarchies[0].ChildOrganisationHierarchies[0], _organisationsQuery.GetSubOrganisationHierarchy(grandchild.Id));
        }
Ejemplo n.º 3
0
        private static IEnumerable <Guid> GetOrganisationsIds(Guid organisationId, OrganisationHierarchy organisationHierarchy)
        {
            var organisationIds = new List <Guid>();

            GetOrganisationsIds(organisationIds, GetChildOrganisationHierarchy(organisationId, organisationHierarchy));
            return(organisationIds);
        }
Ejemplo n.º 4
0
 private static void GetOrganisationsIds(ICollection <Guid> organisationIds, OrganisationHierarchy organisationHierarchy)
 {
     organisationIds.Add(organisationHierarchy.Organisation.Id);
     foreach (var child in organisationHierarchy.ChildOrganisationHierarchies)
     {
         GetOrganisationsIds(organisationIds, child);
     }
 }
Ejemplo n.º 5
0
 private static void AssertHierarchy(OrganisationHierarchy expectedHierarchy, OrganisationHierarchy organisationHierarchy)
 {
     Assert.AreEqual(expectedHierarchy.Organisation.Id, organisationHierarchy.Organisation.Id);
     Assert.AreEqual(expectedHierarchy.ChildOrganisationHierarchies.Count, organisationHierarchy.ChildOrganisationHierarchies.Count);
     for (var index = 0; index < expectedHierarchy.ChildOrganisationHierarchies.Count; ++index)
     {
         AssertHierarchy(expectedHierarchy.ChildOrganisationHierarchies[index], organisationHierarchy.ChildOrganisationHierarchies[index]);
     }
 }
Ejemplo n.º 6
0
        public static string OrganisationHierarchy(this HtmlHelper htmlHelper, OrganisationHierarchy organisationHierarchy, Organisation currentOrganisation, Func <Organisation, MvcHtmlString> getLink)
        {
            var ulTagBuilder = new TagBuilder("ul")
            {
                InnerHtml = htmlHelper.GetOrganisationHierarchyHtml(organisationHierarchy, currentOrganisation, getLink)
            };

            return(ulTagBuilder.ToString(TagRenderMode.Normal));
        }
Ejemplo n.º 7
0
        public void TestSingleOrganisationHierarchy()
        {
            var organisation = _organisationsCommand.CreateTestVerifiedOrganisation(1, null, Guid.NewGuid());

            var expected = new OrganisationHierarchy
            {
                Organisation = organisation,
                ChildOrganisationHierarchies = new List <OrganisationHierarchy>()
            };

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(organisation.Id));
            AssertHierarchy(expected, _organisationsQuery.GetSubOrganisationHierarchy(organisation.Id));
        }
Ejemplo n.º 8
0
 public static OrganisationHierarchy WithOrganisation1(this OrganisationHierarchy organisationHierarchy, Organisation organisation1)
 {
     organisationHierarchy.Organisation1 = organisation1;
     return(organisationHierarchy);
 }
Ejemplo n.º 9
0
 public static OrganisationHierarchy WithOrganisation(this OrganisationHierarchy organisationHierarchy, Organisation organisation)
 {
     organisationHierarchy.Organisation = organisation;
     return(organisationHierarchy);
 }
Ejemplo n.º 10
0
 public static OrganisationHierarchy WithIsActive(this OrganisationHierarchy organisationHierarchy, Boolean isActive)
 {
     organisationHierarchy.IsActive = isActive;
     return(organisationHierarchy);
 }
Ejemplo n.º 11
0
 public static OrganisationHierarchy WithHopsBetweenOrgAndAncestor(this OrganisationHierarchy organisationHierarchy, Int32 hopsBetweenOrgAndAncestor)
 {
     organisationHierarchy.HopsBetweenOrgAndAncestor = hopsBetweenOrgAndAncestor;
     return(organisationHierarchy);
 }
Ejemplo n.º 12
0
        private static string GetOrganisationHierarchyHtml(this HtmlHelper htmlHelper, OrganisationHierarchy organisationHierarchy, Organisation currentOrganisation, Func <Organisation, MvcHtmlString> getLink)
        {
            var sb = new StringBuilder();

            // Add the list item for this organisaton.

            var liTagBuilder = new TagBuilder("li")
            {
                InnerHtml = htmlHelper.GetOrganisationHtml(organisationHierarchy.Organisation, currentOrganisation, getLink)
            };

            sb.AppendLine(liTagBuilder.ToString(TagRenderMode.Normal));

            // Add any children.

            sb.Append(htmlHelper.GetChildOrganisationHierarchiesHtml(organisationHierarchy.ChildOrganisationHierarchies, currentOrganisation, getLink));
            return(sb.ToString());
        }
        /// <summary>
        /// Retrieve a OrganisationHierarchy with associated lookups
        /// </summary>
        /// <param name="currentUser"></param>
        /// <param name="user"></param>
        /// <param name="appID"></param>
        /// <param name="overrideID"></param>
        /// <param name="code"></param>
        /// <param name="dataRepository"></param>
        /// <param name="uow"></param>
        /// <returns></returns>
        public OrganisationHierarchyVMDC GetOrganisationHierarchy(string currentUser, string user, string appID, string overrideID, string code, IUnitOfWork uow, IRepository <OrganisationHierarchy> dataRepository
                                                                  , IRepository <Organisation> ancestorOrganisationRepository
                                                                  , IRepository <Organisation> organisationRepository
                                                                  , IExceptionManager exceptionManager, IMappingService mappingService)

        {
            try
            {
                #region Parameter validation

                // Validate parameters
                if (string.IsNullOrEmpty(currentUser))
                {
                    throw new ArgumentOutOfRangeException("currentUser");
                }
                if (string.IsNullOrEmpty(user))
                {
                    throw new ArgumentOutOfRangeException("user");
                }
                if (string.IsNullOrEmpty(appID))
                {
                    throw new ArgumentOutOfRangeException("appID");
                }
                if (null == dataRepository)
                {
                    throw new ArgumentOutOfRangeException("dataRepository");
                }
                if (null == uow)
                {
                    throw new ArgumentOutOfRangeException("uow");
                }
                if (null == exceptionManager)
                {
                    throw new ArgumentOutOfRangeException("exceptionManager");
                }
                if (null == mappingService)
                {
                    throw new ArgumentOutOfRangeException("mappingService");
                }

                #endregion

                using (uow)
                {
                    OrganisationHierarchyDC destination = null;

                    // If code is null then just return supporting lists
                    if (!string.IsNullOrEmpty(code))
                    {
                        // Convert code to Guid
                        Guid codeGuid = Guid.Parse(code);

                        // Retrieve specific OrganisationHierarchy
                        OrganisationHierarchy dataEntity = dataRepository.Single(x => x.Code == codeGuid);

                        // Convert to data contract for passing through service interface
                        destination = mappingService.Map <OrganisationHierarchy, OrganisationHierarchyDC>(dataEntity);
                    }

                    IEnumerable <Organisation> ancestorOrganisationList = ancestorOrganisationRepository.GetAll(x => x.Name);
                    IEnumerable <Organisation> organisationList         = organisationRepository.GetAll(x => x.Name);

                    List <OrganisationDC> ancestorOrganisationDestinationList = mappingService.Map <List <OrganisationDC> >(ancestorOrganisationList);
                    List <OrganisationDC> organisationDestinationList         = mappingService.Map <List <OrganisationDC> >(organisationList);

                    // Create aggregate contract
                    OrganisationHierarchyVMDC returnObject = new OrganisationHierarchyVMDC();

                    returnObject.OrganisationHierarchyItem = destination;
                    returnObject.AncestorOrganisationList  = ancestorOrganisationDestinationList;
                    returnObject.OrganisationList          = organisationDestinationList;

                    return(returnObject);
                }
            }
            catch (Exception e)
            {
                //Prevent exception from propogating across the service interface
                exceptionManager.ShieldException(e);

                return(null);
            }
        }
Ejemplo n.º 14
0
 public static OrganisationHierarchy WithCode(this OrganisationHierarchy organisationHierarchy, Guid code)
 {
     organisationHierarchy.Code = code;
     return(organisationHierarchy);
 }
Ejemplo n.º 15
0
        public void TestTreeOrganisationHierarchy()
        {
            var parent      = _organisationsCommand.CreateTestVerifiedOrganisation(1, null, Guid.NewGuid());
            var child1      = _organisationsCommand.CreateTestVerifiedOrganisation(2, parent, Guid.NewGuid());
            var child2      = _organisationsCommand.CreateTestVerifiedOrganisation(3, parent, Guid.NewGuid());
            var grandchild1 = _organisationsCommand.CreateTestVerifiedOrganisation(4, child1, Guid.NewGuid());
            var grandchild2 = _organisationsCommand.CreateTestVerifiedOrganisation(5, child1, Guid.NewGuid());
            var grandchild3 = _organisationsCommand.CreateTestVerifiedOrganisation(6, child2, Guid.NewGuid());

            var expected = new OrganisationHierarchy
            {
                Organisation = parent,
                ChildOrganisationHierarchies = new List <OrganisationHierarchy>
                {
                    new OrganisationHierarchy
                    {
                        Organisation = child1,
                        ChildOrganisationHierarchies = new List <OrganisationHierarchy>
                        {
                            new OrganisationHierarchy
                            {
                                Organisation = grandchild1,
                                ChildOrganisationHierarchies = new List <OrganisationHierarchy>()
                            },
                            new OrganisationHierarchy
                            {
                                Organisation = grandchild2,
                                ChildOrganisationHierarchies = new List <OrganisationHierarchy>()
                            }
                        }
                    },
                    new OrganisationHierarchy
                    {
                        Organisation = child2,
                        ChildOrganisationHierarchies = new List <OrganisationHierarchy>
                        {
                            new OrganisationHierarchy
                            {
                                Organisation = grandchild3,
                                ChildOrganisationHierarchies = new List <OrganisationHierarchy>()
                            },
                        }
                    }
                }
            };

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(parent.Id));
            AssertHierarchy(expected, _organisationsQuery.GetSubOrganisationHierarchy(parent.Id));

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(child1.Id));
            var child1Hierarchy = (from c in expected.ChildOrganisationHierarchies where c.Organisation.Id == child1.Id select c).Single();

            AssertHierarchy(child1Hierarchy, _organisationsQuery.GetSubOrganisationHierarchy(child1.Id));

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(child2.Id));
            var child2Hierarchy = (from c in expected.ChildOrganisationHierarchies where c.Organisation.Id == child2.Id select c).Single();

            AssertHierarchy(child2Hierarchy, _organisationsQuery.GetSubOrganisationHierarchy(child2.Id));

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(grandchild1.Id));
            var grandchild1Hierarchy = (from c in child1Hierarchy.ChildOrganisationHierarchies where c.Organisation.Id == grandchild1.Id select c).Single();

            AssertHierarchy(grandchild1Hierarchy, _organisationsQuery.GetSubOrganisationHierarchy(grandchild1.Id));

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(grandchild2.Id));
            var grandchild2Hierarchy = (from c in child1Hierarchy.ChildOrganisationHierarchies where c.Organisation.Id == grandchild2.Id select c).Single();

            AssertHierarchy(grandchild2Hierarchy, _organisationsQuery.GetSubOrganisationHierarchy(grandchild2.Id));

            AssertHierarchy(expected, _organisationsQuery.GetOrganisationHierarchy(grandchild3.Id));
            var grandchild3Hierarchy = (from c in child2Hierarchy.ChildOrganisationHierarchies where c.Organisation.Id == grandchild3.Id select c).Single();

            AssertHierarchy(grandchild3Hierarchy, _organisationsQuery.GetSubOrganisationHierarchy(grandchild3.Id));
        }
Ejemplo n.º 16
0
 IList <Guid> IRecruitersQuery.GetRecruiters(OrganisationHierarchy organisationHierarchy)
 {
     return(_repository.GetRecruiters(GetOrganisationIds(organisationHierarchy)));
 }
Ejemplo n.º 17
0
        private static OrganisationHierarchy GetChildOrganisationHierarchy(Guid organisationId, OrganisationHierarchy organisationHierarchy)
        {
            if (organisationHierarchy.Organisation.Id == organisationId)
            {
                return(organisationHierarchy);
            }

            foreach (var child in organisationHierarchy.ChildOrganisationHierarchies)
            {
                var childOrganisationHierarchy = GetChildOrganisationHierarchy(organisationId, child);
                if (childOrganisationHierarchy != null)
                {
                    return(childOrganisationHierarchy);
                }
            }

            return(null);
        }
Ejemplo n.º 18
0
 public static OrganisationHierarchy WithAncestorOrganisationCode(this OrganisationHierarchy organisationHierarchy, Guid ancestorOrganisationCode)
 {
     organisationHierarchy.AncestorOrganisationCode = ancestorOrganisationCode;
     return(organisationHierarchy);
 }
        /// <summary>
        /// Update a OrganisationHierarchy
        /// </summary>
        /// <param name="currentUser"></param>
        /// <param name="user"></param>
        /// <param name="appID"></param>
        /// <param name="overrideID"></param>
        /// <param name="code"></param>
        /// <param name="lockID"></param>
        /// <param name="dataRepository"></param>
        /// <param name="uow"></param>
        public void DeleteOrganisationHierarchy(string currentUser, string user, string appID, string overrideID, string code, string lockID, IRepository <OrganisationHierarchy> dataRepository, IUnitOfWork uow, IExceptionManager exceptionManager, IMappingService mappingService)
        {
            try
            {
                #region Parameter validation

                // Validate parameters
                if (string.IsNullOrEmpty(currentUser))
                {
                    throw new ArgumentOutOfRangeException("currentUser");
                }
                if (string.IsNullOrEmpty(user))
                {
                    throw new ArgumentOutOfRangeException("user");
                }
                if (string.IsNullOrEmpty(appID))
                {
                    throw new ArgumentOutOfRangeException("appID");
                }
                if (string.IsNullOrEmpty(code))
                {
                    throw new ArgumentOutOfRangeException("code");
                }
                if (string.IsNullOrEmpty(lockID))
                {
                    throw new ArgumentOutOfRangeException("lockID");
                }
                if (null == dataRepository)
                {
                    throw new ArgumentOutOfRangeException("dataRepository");
                }
                if (null == uow)
                {
                    throw new ArgumentOutOfRangeException("uow");
                }
                if (null == exceptionManager)
                {
                    throw new ArgumentOutOfRangeException("exceptionManager");
                }
                if (null == mappingService)
                {
                    throw new ArgumentOutOfRangeException("mappingService");
                }

                #endregion

                using (uow)
                {
                    // Convert string to guid
                    Guid codeGuid = Guid.Parse(code);

                    // Find item based on ID
                    OrganisationHierarchy dataEntity = dataRepository.Single(x => x.Code == codeGuid);

                    // Delete the item
                    dataRepository.Delete(dataEntity);

                    // Commit unit of work
                    uow.Commit();
                }
            }
            catch (Exception e)
            {
                //Prevent exception from propogating across the service interface
                exceptionManager.ShieldException(e);
            }
        }
Ejemplo n.º 20
0
 public static OrganisationHierarchy WithOrganisationCode(this OrganisationHierarchy organisationHierarchy, Guid organisationCode)
 {
     organisationHierarchy.OrganisationCode = organisationCode;
     return(organisationHierarchy);
 }
        /// <summary>
        ///  Create a OrganisationHierarchy
        /// </summary>
        /// <param name="currentUser"></param>
        /// <param name="user"></param>
        /// <param name="appID"></param>
        /// <param name="overrideID"></param>
        /// <param name="dc"></param>
        /// <param name="dataRepository"></param>
        /// <param name="uow"></param>
        public OrganisationHierarchyVMDC CreateOrganisationHierarchy(string currentUser, string user, string appID, string overrideID, OrganisationHierarchyDC dc, IRepository <OrganisationHierarchy> dataRepository, IUnitOfWork uow, IExceptionManager exceptionManager, IMappingService mappingService)
        {
            try
            {
                #region Parameter validation

                // Validate parameters
                if (string.IsNullOrEmpty(currentUser))
                {
                    throw new ArgumentOutOfRangeException("currentUser");
                }
                if (string.IsNullOrEmpty(user))
                {
                    throw new ArgumentOutOfRangeException("user");
                }
                if (string.IsNullOrEmpty(appID))
                {
                    throw new ArgumentOutOfRangeException("appID");
                }
                if (null == dc)
                {
                    throw new ArgumentOutOfRangeException("dc");
                }
                if (null == dataRepository)
                {
                    throw new ArgumentOutOfRangeException("dataRepository");
                }
                if (null == uow)
                {
                    throw new ArgumentOutOfRangeException("uow");
                }
                if (null == exceptionManager)
                {
                    throw new ArgumentOutOfRangeException("exceptionManager");
                }
                if (null == mappingService)
                {
                    throw new ArgumentOutOfRangeException("mappingService");
                }

                #endregion

                using (uow)
                {
                    // Create a new ID for the OrganisationHierarchy item
                    dc.Code = Guid.NewGuid();

                    // Map data contract to model
                    OrganisationHierarchy destination = mappingService.Map <OrganisationHierarchyDC, OrganisationHierarchy>(dc);

                    // Add the new item
                    dataRepository.Add(destination);

                    // Commit unit of work
                    uow.Commit();

                    // Map model back to data contract to return new row id.
                    dc = mappingService.Map <OrganisationHierarchy, OrganisationHierarchyDC>(destination);
                }

                // Create aggregate data contract
                OrganisationHierarchyVMDC returnObject = new OrganisationHierarchyVMDC();

                // Add new item to aggregate
                returnObject.OrganisationHierarchyItem = dc;

                return(returnObject);
            }
            catch (Exception e)
            {
                //Prevent exception from propogating across the service interface
                exceptionManager.ShieldException(e);

                return(null);
            }
        }
Ejemplo n.º 22
0
 public static OrganisationHierarchy WithImmediateParent(this OrganisationHierarchy organisationHierarchy, Boolean immediateParent)
 {
     organisationHierarchy.ImmediateParent = immediateParent;
     return(organisationHierarchy);
 }