Ejemplo n.º 1
0
        public OrgUnit GetCustomerCompanyDetail(string orgId)
        {
            int id = 0;

            if (orgId != null)
            {
                id = Convert.ToInt32(orgId);
            }
            OrgUnit orgUnit;
            List <OrganizationPerson> personlist;
            OrganizationPerson        person;

            using (BraathenEiendomEntities entity = new BraathenEiendomEntities())
            {
                var orgResult = entity.OrganizationUnits.Where(w => w.OrganizationUnitID == id).Select(s => s).FirstOrDefault();
                personlist   = new List <OrganizationPerson>();
                orgUnit      = new OrgUnit();
                orgUnit.id   = orgResult.OrganizationUnitID;
                orgUnit.name = orgResult.OrganizationUnitName;
                orgUnit.Code = string.IsNullOrEmpty(orgResult.Code)?true :false;
                orgUnit.OrganizationNumber = orgResult.OrgNumber;
                if (orgResult.PictureID != null)
                {
                    orgUnit.PicturePath = entity.PictureProperties.Where(w => w.PicturePropertyID == orgResult.PictureID).SingleOrDefault().Filepath.ToString();
                }
                var persons = entity.People.Join(entity.OrganizationUnit_Person, p => p.PersonID, o => o.PersonID, (P, O) => new { p = P, o = O })
                              .Where(w => w.o.OrganizationUnitID == orgResult.OrganizationUnitID).Select(s => s.p).OrderBy(o => o.DisplayName).ToList();
                if (persons != null)
                {
                    foreach (var p in persons.Where(p => p.Custom2 == null))
                    {
                        person            = new OrganizationPerson();
                        person.id         = p.PersonID;
                        person.name       = p.DisplayName;
                        person.telephone  = p.MobilePhone;
                        person.UserEmail  = p.Email;
                        person.Department = p.Custom1;
                        person.UserGroup  = string.Join(",", entity.UserGroups.Join(entity.UserGroup_User, gp => gp.UserGroupId, go => go.UserGroupId, (GP, GO) => new { gp = GP, go = GO })
                                                        .Where(w => w.go.UserId == p.PersonID).Select(gs => gs.gp.UserGroupName));
                        personlist.Add(person);
                    }
                }
                orgUnit.personList = personlist;
            }
            return(orgUnit);
        }
Ejemplo n.º 2
0
        public IEnumerable <OrganizationPerson> UserListbyBuilding(int buildingId, int orgId)
        {
            List <OrganizationPerson> userList = new List <OrganizationPerson>();
            OrganizationPerson        user;

            using (BraathenEiendomEntities entity = new BraathenEiendomEntities())
            {
                if (buildingId != 0)
                {
                    var orgList = entity.OrganizationUnits.Where(w => w.ParentID == buildingId).Select(s => new { s.OrganizationUnitID, s.OrganizationUnitName }).ToList();
                    if (orgList != null)
                    {
                        foreach (var item in orgList)
                        {
                            var persons = entity.People.Join(entity.OrganizationUnit_Person, p => p.PersonID, o => o.PersonID, (P, O) => new { p = P, o = O })
                                          .Where(w => w.o.OrganizationUnitID == item.OrganizationUnitID).Select(s => s.p).OrderBy(o => o.DisplayName).ToList();
                            if (persons != null)
                            {
                                foreach (var p in persons.Where(p => p.Custom2 == null || p.Custom2 == ""))
                                {
                                    user            = new OrganizationPerson();
                                    user.id         = p.PersonID;
                                    user.name       = p.DisplayName;
                                    user.telephone  = p.MobilePhone;
                                    user.UserEmail  = p.Email;
                                    user.Department = p.Custom1;
                                    user.UserGroup  = string.Join(",", entity.UserGroups.Join(entity.UserGroup_User, gp => gp.UserGroupId, go => go.UserGroupId, (GP, GO) => new { gp = GP, go = GO })
                                                                  .Where(w => w.go.UserId == p.PersonID).Select(gs => gs.gp.UserGroupName));
                                    user.OrganizationName = item.OrganizationUnitName;
                                    userList.Add(user);
                                }
                            }
                        }
                    }
                }
                else
                {
                    if (orgId != 0)
                    {
                        var persons = entity.People.Join(entity.OrganizationUnit_Person, p => p.PersonID, o => o.PersonID, (P, O) => new { p = P, o = O })
                                      .Where(w => w.o.OrganizationUnitID == orgId).Select(s => s.p).OrderBy(o => o.DisplayName).ToList();
                        if (persons != null)
                        {
                            foreach (var p in persons.Where(p => p.Custom2 == null || p.Custom2 == ""))
                            {
                                user            = new OrganizationPerson();
                                user.id         = p.PersonID;
                                user.name       = p.DisplayName;
                                user.telephone  = p.MobilePhone;
                                user.UserEmail  = p.Email;
                                user.Department = p.Custom1;
                                user.UserGroup  = string.Join(",", entity.UserGroups.Join(entity.UserGroup_User, gp => gp.UserGroupId, go => go.UserGroupId, (GP, GO) => new { gp = GP, go = GO })
                                                              .Where(w => w.go.UserId == p.PersonID).Select(gs => gs.gp.UserGroupName));
                                userList.Add(user);
                            }
                        }
                    }
                }
            }
            userList = userList.OrderBy(o => o.name).ToList();
            return(userList);
        }
        public static OrganizationPerson CreateOrgPerson(this IRepositoryAsync <OrganizationPerson> repo, OrganizationPersonInput input, Guid organizationId)
        {
            var entity = new OrganizationPerson
            {
                Created             = DateTimeOffset.UtcNow,
                Updated             = DateTimeOffset.UtcNow,
                PersonId            = input.PersonId,
                OrganizationId      = organizationId,
                IsOrganizationOwner = input.IsCustomer,
                IsDefault           = true,
                IsDeleted           = false,
                Status        = PersonStatus.Active,
                ObjectState   = ObjectState.Added,
                AffiliateCode = Guid.NewGuid()
                                .ToString()
                                .Substring(0, 5)
                                .ToUpper(),
                Customer = input.IsCustomer ? new OrganizationCustomer()
                {
                    CustomerId     = input.PersonId,
                    OrganizationId = organizationId,
                    IsDefault      = input.IsCustomer,
                    ObjectState    = ObjectState.Added
                } : null,
                Contractor = input.IsContractor ? new OrganizationContractor()
                {
                    ContractorId     = input.PersonId,
                    ContractorStream = input.ContractorStream.GetValueOrDefault(),
                    OrganizationId   = organizationId,
                    ObjectState      = ObjectState.Added
                } : null,
                AccountManager = input.IsAccountManager ? new OrganizationAccountManager()
                {
                    AccountManagerId     = input.PersonId,
                    AccountManagerStream = input.AccountManagerStream.GetValueOrDefault(),
                    OrganizationId       = organizationId,
                    ObjectState          = ObjectState.Added
                } : null,
                ProjectManager = input.IsProjectManager ? new OrganizationProjectManager()
                {
                    ProjectManagerId     = input.PersonId,
                    OrganizationId       = organizationId,
                    ProjectManagerStream = input.ProjectManagerStream.GetValueOrDefault(),
                    ObjectState          = ObjectState.Added
                } : null,
                Recruiter = input.IsRecruiter ? new OrganizationRecruiter()
                {
                    RecruiterId     = input.PersonId,
                    OrganizationId  = organizationId,
                    RecruiterStream = input.RecruiterStream.GetValueOrDefault(),
                    RecruiterBonus  = input.RecruiterBonus.GetValueOrDefault(),
                    ObjectState     = ObjectState.Added
                } : null,
                Marketer = input.IsMarketer ? new OrganizationMarketer()
                {
                    MarketerId     = input.PersonId,
                    OrganizationId = organizationId,
                    Created        = DateTimeOffset.UtcNow,
                    MarketerStream = input.MarketerStream.GetValueOrDefault(),
                    MarketerBonus  = input.MarketerBonus.GetValueOrDefault(),
                    ObjectState    = ObjectState.Added
                } : null
            }.InjectFrom(input) as OrganizationPerson;

            repo.Insert(entity);
            return(entity);
        }
        private OrganizationResult UpgradeToMarketingOrganization(MarketingOrganizationUpgradeInput input,
                                                                  Organization organization, OrganizationPerson person, bool saveChanges = true)
        {
            _logger.LogInformation(GetLogMessage("{0}, {1}"), organization.Name, organization.OrganizationType.GetDescription());

            if (person.Marketer == null)
            {
                _logger.LogDebug(GetLogMessage("No Marketer Found"));

                person.Marketer = new OrganizationMarketer()
                {
                    MarketerId     = person.PersonId,
                    OrganizationId = person.OrganizationId,
                    MarketerStream = input.MarketerStream,
                    MarketerBonus  = input.MarketerBonus,
                    ObjectState    = ObjectState.Added,
                };
                person.ObjectState = ObjectState.Modified;

                var recordsUpdated = _organizationPersonRepo.InsertOrUpdateGraph(person, true);

                _logger.LogDebug(GetLogMessage("OrganizationPeople Records Updated: {0}"), recordsUpdated);
            }
            else
            {
                _logger.LogDebug(GetLogMessage("Person is already a marketer"));
            }


            organization.MarketingOrganization = new MarketingOrganization()
            {
                MarketerStream        = input.MarketerStream,
                MarketingAgencyBonus  = input.MarketingAgencyBonus,
                MarketerBonus         = input.MarketerBonus,
                MarketingAgencyStream = input.MarketingAgencyStream,

                DefaultMarketerId = person.PersonId,
                ObjectState       = ObjectState.Added,
                ServiceFeePerLead = 1
            }.InjectFrom(input) as MarketingOrganization;
            organization.ObjectState      = ObjectState.Modified;
            organization.OrganizationType = organization.OrganizationType.Add(OrganizationType.Marketing);

            _logger.LogDebug(GetLogMessage("new org type {0}"), organization.OrganizationType);

            var organizationResult = Repository.InsertOrUpdateGraph(organization, saveChanges);

            _logger.LogDebug(GetLogMessage("Organization Records Updated: {0}"), organizationResult);

            var subscriptionResult = _subscriptionService.PushSubscription(organization.Id, true).Result;

            _logger.LogDebug(GetLogMessage("Subscription Records Updated: {0}"), subscriptionResult);


            return(new OrganizationResult()
            {
                Succeeded = organizationResult > 0,
                OrganizationId = organization.Id
            });
        }
        private OrganizationResult UpgradeToProviderOrganization(ProviderOrganizationUpgradeInput input,
                                                                 Organization organization, OrganizationPerson person, bool saveChanges = true)
        {
            _logger.LogInformation(GetLogMessage("{Organization}, Saving Changes: {saveChanges}"), organization.Name, saveChanges);

            var retVal = new OrganizationResult()
            {
                OrganizationId = organization.Id
            };

            person.AccountManager = new OrganizationAccountManager()
            {
                AccountManagerId     = person.PersonId,
                OrganizationId       = person.OrganizationId,
                AccountManagerStream = input.AccountManagerStream,
                ObjectState          = ObjectState.Added
            };

            person.ProjectManager = new OrganizationProjectManager()
            {
                OrganizationId       = person.OrganizationId,
                ProjectManagerId     = person.PersonId,
                ProjectManagerStream = input.ProjectManagerStream,
                ObjectState          = ObjectState.Added
            };

            person.Contractor = new OrganizationContractor()
            {
                ContractorId     = person.PersonId,
                OrganizationId   = person.OrganizationId,
                ContractorStream = input.ContractorStream,
                ObjectState      = ObjectState.Added
            };
            person.ObjectState = ObjectState.Modified;

            var records = _organizationPersonRepo.InsertOrUpdateGraph(person, true);

            _logger.LogDebug(GetLogMessage("{0} Records updated"), records);

            if (records == 0)
            {
                retVal.Succeeded    = false;
                retVal.ErrorMessage = "Unable to add user to provider roles";
                return(retVal);
            }

            organization.ProviderOrganization = new ProviderOrganization()
            {
                ContractorStream        = input.ContractorStream,
                ProjectManagerStream    = input.ProjectManagerStream,
                AccountManagerStream    = input.AccountManagerStream,
                AgencyStream            = input.AgencyStream,
                Discoverable            = input.Discoverable,
                ObjectState             = ObjectState.Added,
                SystemStream            = SystemStream,
                DefaultAccountManagerId = person.PersonId,
                DefaultContractorId     = person.PersonId,
                DefaultProjectManagerId = person.PersonId
            }.InjectFrom(input) as ProviderOrganization;
            organization.ObjectState      = ObjectState.Modified;
            organization.OrganizationType = organization.OrganizationType.Add(OrganizationType.Provider);

            _logger.LogDebug(GetLogMessage("new org type {0}"), organization.OrganizationType);

            var orgRecords = Repository.InsertOrUpdateGraph(organization, saveChanges);

            _logger.LogDebug(GetLogMessage("{0} Organization Records updated"), orgRecords);

            if (orgRecords == 0)
            {
                retVal.ErrorMessage = "Unable to update organization";
                return(retVal);
            }

            var stripeResult = _subscriptionService.PushSubscription(organization.Id, saveChanges).Result;

            _logger.LogDebug(GetLogMessage("{StripeChanges} stripe records updated"), stripeResult);

            if (stripeResult > 0)
            {
                retVal.Succeeded = true;
            }

            return(retVal);
        }
        private OrganizationResult UpgradeToRecruitingOrganization(RecruitingOrganizationUpgradeInput input,
                                                                   Organization organization, OrganizationPerson person, bool saveChanges = true)
        {
            _logger.LogInformation(GetLogMessage("{0}"), organization.Name);

            if (person.Recruiter == null)
            {
                _logger.LogDebug(GetLogMessage("Person is not a recruiter"));

                person.Recruiter = new OrganizationRecruiter()
                {
                    RecruiterId     = person.PersonId,
                    OrganizationId  = person.OrganizationId,
                    RecruiterStream = input.RecruiterStream,
                    ObjectState     = ObjectState.Added,
                };
                person.ObjectState = ObjectState.Modified;

                var recordsUpdated = _organizationPersonRepo.InsertOrUpdateGraph(person, true);

                _logger.LogDebug(GetLogMessage("OrganizationPeople Records Updated: {0}"), recordsUpdated);
            }
            else
            {
                _logger.LogDebug(GetLogMessage("Person is already a recruiter"));
            }


            organization.RecruitingOrganization = new RecruitingOrganization()
            {
                RecruiterStream        = input.RecruiterStream,
                RecruitingAgencyStream = input.RecruitingAgencyStream,
                DefaultRecruiterId     = person.PersonId,
                Updated     = DateTimeOffset.UtcNow,
                Created     = DateTimeOffset.UtcNow,
                ObjectState = ObjectState.Added,
            }.InjectFrom(input) as RecruitingOrganization;
            organization.ObjectState      = ObjectState.Modified;
            organization.OrganizationType = organization.OrganizationType.Add(OrganizationType.Recruiting);

            var result = Repository.InsertOrUpdateGraph(organization, saveChanges);

            _logger.LogDebug(GetLogMessage("Pushing subscription to stripe..."));

            var result2 = _subscriptionService.PushSubscription(organization.Id, saveChanges).Result;

            _logger.LogDebug(GetLogMessage("{OrganizationRecordsChanged}, {StripeRecordsChanged}"), result, result2);


            return(new OrganizationResult()
            {
                Succeeded = result > 0,
                OrganizationId = organization.Id
            });
        }