private lm.Comol.Core.Dashboard.Domain.dtoCommunityItem CreateCommunity(lm.Comol.Core.BaseModules.CommunityManagement.dtoTreeCommunityNode node, liteCommunityInfo community, Dictionary <Int32, List <long> > associations, Dictionary <Int32, String> responsibles)
        {
            lm.Comol.Core.Dashboard.Domain.dtoCommunityItem dto = new lm.Comol.Core.Dashboard.Domain.dtoCommunityItem();
            dto.Id             = node.Id;
            dto.IdOrganization = node.IdOrganization;
            dto.IdTags         = (associations.ContainsKey(node.Id) ? associations[node.Id] : new List <long>());
            dto.IdType         = node.IdCommunityType;
            dto.Name           = node.Name;
            dto.Status         = node.Status;
            if (community.isArchived)
            {
                dto.Status = Communities.CommunityStatus.Stored;
            }
            else if (community.isClosedByAdministrator)
            {
                dto.Status = Communities.CommunityStatus.Blocked;
            }
            else
            {
                dto.Status = Communities.CommunityStatus.Active;
            }
            dto.Tags = new List <string>();

            dto.AllowSubscription = community.AllowSubscription;
            dto.AllowUnsubscribe  = community.AllowUnsubscribe;
            dto.ClosedOn          = community.ClosedOn;
            dto.MaxOverDefaultSubscriptionsAllowed = community.MaxOverDefaultSubscriptionsAllowed;
            dto.MaxUsersWithDefaultRole            = community.MaxUsersWithDefaultRole;
            dto.SubscriptionEndOn   = community.SubscriptionEndOn;
            dto.ConfirmSubscription = community.ConfirmSubscription;
            dto.SubscriptionStartOn = community.SubscriptionStartOn;
            if (node.Year > 0)
            {
                dto.Year = node.Year.ToString() + "/" + (node.Year + 1).ToString();
            }
            else
            {
                dto.Year = "";
            }
            if (responsibles != null && responsibles.ContainsKey(node.IdResponsible))
            {
                dto.Responsible = responsibles[node.IdResponsible];
            }
            else
            {
                dto.Responsible = "";
            }
            dto.CourseTime = "";
            dto.DegreeType = "";
            return(dto);
        }
        public dtoNodeDetails(liteCommunityInfo community, Int32 idCommunity, Dictionary <Int32, long> enrolledUsers = null, List <liteCommunityConstraint> constraints = null, liteSubscriptionInfo enrollment = null)
        {
            Permissions     = new dtoCommunityNodeItemPermission();
            NotAvailableFor = new List <EnrollingStatus>();
            Constraints     = new List <dtoCommunityConstraint>();
            Community       = new lm.Comol.Core.Dashboard.Domain.dtoCommunityItem(community, idCommunity);
            if (enrollment != null)
            {
                LastAccessOn = enrollment.LastAccessOn;
                EnrolledOn   = enrollment.SubscribedOn;
            }
            if (AvailableSeats <= 0)
            {
                NotAvailableFor.Add(EnrollingStatus.Seats);
            }
            if (!Community.AllowSubscription)
            {
                NotAvailableFor.Add(EnrollingStatus.Unavailable);
            }
            else
            {
                if (!Community.IsAvailableForSubscriptionStartOn(DateTime.Now))
                {
                    NotAvailableFor.Add(EnrollingStatus.StartDate);
                }
                else if (!Community.IsAvailableForSubscriptionEndOn(DateTime.Now))
                {
                    NotAvailableFor.Add(EnrollingStatus.EndDate);
                }
            }

            if (enrolledUsers != null && enrolledUsers.ContainsKey(idCommunity))
            {
                EnrolledUsers = enrolledUsers[idCommunity];
                if (AvailableSeats <= 0)
                {
                    NotAvailableFor.Add(EnrollingStatus.Seats);
                }
            }
        }
        private lm.Comol.Core.Dashboard.Domain.dtoCommunityItem CreateCommunity(lm.Comol.Core.BaseModules.CommunityManagement.dtoTreeCommunityNode node, lm.Comol.Core.DomainModel.liteCommunityInfo community, Dictionary <Int32, List <long> > associations, Dictionary <Int32, String> responsibles, Dictionary <Int32, String> cTimes, Dictionary <Int32, String> degreesTypes, Dictionary <Int32, String> cTypes, lm.Comol.Core.DomainModel.liteSubscriptionInfo enrollment = null)
        {
            lm.Comol.Core.Dashboard.Domain.dtoCommunityItem dto = new lm.Comol.Core.Dashboard.Domain.dtoCommunityItem();
            dto.Id             = node.Id;
            dto.IdOrganization = node.IdOrganization;
            dto.IdTags         = (associations.ContainsKey(node.Id) ? associations[node.Id] : new List <long>());
            dto.IdType         = node.IdCommunityType;
            dto.Name           = node.Name;
            dto.Status         = node.Status;
            if (community.isArchived)
            {
                dto.Status = Communities.CommunityStatus.Stored;
            }
            else if (community.isClosedByAdministrator)
            {
                dto.Status = Communities.CommunityStatus.Blocked;
            }
            else
            {
                dto.Status = Communities.CommunityStatus.Active;
            }
            dto.Tags = new List <string>();

            dto.AllowSubscription = community.AllowSubscription;
            dto.AllowUnsubscribe  = community.AllowUnsubscribe;
            dto.ClosedOn          = community.ClosedOn;
            dto.MaxOverDefaultSubscriptionsAllowed = community.MaxOverDefaultSubscriptionsAllowed;
            dto.MaxUsersWithDefaultRole            = community.MaxUsersWithDefaultRole;
            dto.SubscriptionEndOn   = community.SubscriptionEndOn;
            dto.ConfirmSubscription = community.ConfirmSubscription;
            dto.SubscriptionStartOn = community.SubscriptionStartOn;
            if (node.Year > 0)
            {
                dto.Year = node.Year.ToString() + "/" + (node.Year + 1).ToString();
            }
            else
            {
                dto.Year = "";
            }
            if (responsibles != null && responsibles.ContainsKey(node.IdResponsible))
            {
                dto.Responsible = responsibles[node.IdResponsible];
            }
            else
            {
                dto.Responsible = "";
            }
            if (cTimes != null && cTimes.ContainsKey(node.IdCourseTime))
            {
                dto.CourseTime = cTimes[node.IdCourseTime];
            }
            else
            {
                dto.CourseTime = "";
            }
            if (degreesTypes != null && degreesTypes.ContainsKey(node.IdDegreeType))
            {
                dto.DegreeType = degreesTypes[node.IdDegreeType];
            }
            else
            {
                dto.DegreeType = "";
            }
            if (cTypes.ContainsKey(node.IdCommunityType))
            {
                dto.CommunityType = cTypes[node.IdCommunityType];
            }

            if (enrollment != null)
            {
                IdRole           = enrollment.IdRole;
                LastAccessOn     = enrollment.LastAccessOn;
                SubscribedOn     = enrollment.SubscribedOn;
                PreviousAccessOn = enrollment.PreviousAccessOn;
                if (enrollment.Accepted && enrollment.Enabled)
                {
                    if (Community != null && Community.Status != Communities.CommunityStatus.Blocked)
                    {
                        Status = DomainModel.SubscriptionStatus.activemember;
                    }
                    else
                    {
                        Status = DomainModel.SubscriptionStatus.communityblocked;
                    }
                }
                else if (!enrollment.Enabled && enrollment.Accepted)
                {
                    Status = DomainModel.SubscriptionStatus.blocked;
                }
                else if (!enrollment.Accepted)
                {
                    Status = DomainModel.SubscriptionStatus.waiting;
                }
            }
            return(dto);
        }