public async Task <int> ChangeOrganizationMembershipStatus(OrganizationMembership organizationMembership, int newStatusId)
        {
            var org = _organizationRepository.Get().SingleOrDefault(x => x.ApplicationId == organizationMembership.ApplicationId);

            org.ApplicationStatusId = newStatusId;
            return(await _organizationRepository.ModifyOrganizationMembership(org));
        }
        public void CanCreateAndDeleteOrganizationMemberships()
        {
            var org = api.Organizations.CreateOrganization(new Organization()
            {
                Name = "Test Org"
            });

            var user = new User()
            {
                Name  = "Test User Org Mem",
                Email = "*****@*****.**",
                Role  = "end-user"
            };


            var res = api.Users.CreateUser(user);

            var org_membership = new OrganizationMembership()
            {
                UserId = res.User.Id, OrganizationId = org.Organization.Id
            };

            var res2 = api.Organizations.CreateOrganizationMembership(org_membership);

            Assert.Greater(res2.OrganizationMembership.Id, 0);
            Assert.True(api.Organizations.DeleteOrganizationMembership(res2.OrganizationMembership.Id.Value));
            Assert.True(api.Users.DeleteUser(res.User.Id.Value));
            Assert.True(api.Organizations.DeleteOrganization(org.Organization.Id.Value));
        }
Beispiel #3
0
        public async Task <int> ModifyOrganizationMembership(OrganizationMembership organizationMembership)
        {
            var org = _data.AsQueryable().SingleOrDefault(x => x.ApplicationId == organizationMembership.ApplicationId);

            org = organizationMembership;
            return(await SaveChangesAsync());
        }
Beispiel #4
0
 public SetupWithMembershipResult(
     OrganizationMembership organizationMembership,
     Organization organization,
     UserResponse user)
     : base(organization, user)
 {
     OrganizationMembership = organizationMembership;
 }
 public async Task <OrganizationMembership> PostForUserAsync(
     OrganizationMembership organizationMembership,
     long userId,
     CancellationToken cancellationToken = default(CancellationToken))
 {
     return(await PostByUserIdAsync(
                organizationMembership,
                userId,
                cancellationToken));
 }
        public async Task <OrganizationMembership> CreateAsync(
            OrganizationMembership organizationMembership,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            var response = await CreateAsync <OrganizationMembershipResponse, OrganizationMembershipCreateRequest>(
                ResourceUri,
                new OrganizationMembershipCreateRequest(organizationMembership),
                "create-membership",
                cancellationToken: cancellationToken
                );

            return(response?
                   .OrganizationMembership);
        }
        public override async Task <Organization> CreateAsync(Organization entity)
        {
            var newEntity = await base.CreateAsync(entity);

            // an org can only be created by the owner of the org. (for now anyway)
            var membership = new OrganizationMembership {
                User         = newEntity.Owner,
                Organization = newEntity
            };

            await OrganizationMembershipRepository.CreateAsync(membership);

            return(newEntity);
        }
        public async Task <OrganizationMembership> PostByUserIdAsync(
            OrganizationMembership organizationMembership,
            long userId,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            var response = await CreateAsync <OrganizationMembershipResponse, OrganizationMembershipCreateRequest>(
                string.Format(UsersUrlFormat, userId),
                new OrganizationMembershipCreateRequest(organizationMembership),
                "create-membership",
                scope: $"PostByUserIdAsync({userId})",
                cancellationToken : cancellationToken
                );

            return(response?
                   .OrganizationMembership);
        }
        public async Task <OrganizationMembership> PostForUserAsync(OrganizationMembership organizationMembership, string userId)
        {
            using (_loggerScope(_logger, $"PostAsync({userId})"))
                using (var client = _apiClient.CreateClient())
                {
                    var response = await client.PostAsJsonAsync(string.Format(UsersUrlFormat, userId), organizationMembership).ConfigureAwait(false);

                    if (response.StatusCode != System.Net.HttpStatusCode.Created)
                    {
                        throw new HttpRequestException(
                                  $"Status code retrieved was {response.StatusCode} and not a 201 as expected" +
                                  Environment.NewLine +
                                  "See: https://developer.zendesk.com/rest_api/docs/core/tickets#create-ticket");
                    }

                    return(await response.Content.ReadAsAsync <OrganizationMembership>());
                }
        }
Beispiel #10
0
        public async Task <IHttpActionResult> SetUserEmployer(OrganizationMembership organizationMembership)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!_employerService.ValidateEmployer(organizationMembership.Employer))
            {
                BadRequest("Employer is not validate.");
            }

            var responseMessage = Request.CreateResponse(HttpStatusCode.OK);

            // determine the uniqueness of the employer
            var employer = _employerService.FindExistingEmployer(organizationMembership.Employer);

            if (employer == null)
            {
                var userIdentity = ((ClaimsIdentity)User.Identity);
                var userId       = userIdentity.GetUserId();
                var user         = UserManager.Users.SingleOrDefault(s => s.Id == userId && s.Deleted != true && s.Disabled != true);
                // set user organization
                user.Organizations.Add(organizationMembership);
                IdentityResult result = await UserManager.UpdateAsync(user);

                if (!result.Succeeded)
                {
                    return(GetErrorResult(result));
                }
            }
            else
            {
                // Employer exists
                var orgMembership = _organizationService.GetOrganizationMembershipByEmployer(employer);
                responseMessage.StatusCode = HttpStatusCode.Found;
                responseMessage.Content    = new StringContent(string.Format("{0} {1}", orgMembership?.CreatedBy?.FirstName, orgMembership?.CreatedBy?.LastName));
            }

            return(ResponseMessage(responseMessage));
        }
Beispiel #11
0
        public void ValidatesOrganization_UpdateStatusTest()
        {
            // Arrange
            var service     = new OrganizationService(_organizationRepository);
            var oldStatusId = 1;
            var newStatusId = 2;
            var employer    = new Employer()
            {
                Id = "123456"
            };
            var organizationMembership = new OrganizationMembership {
                ApplicationId = "2edbc12f-4fd9-4fed-a848-b8bfff4d4e32", Employer = employer, ApplicationStatusId = oldStatusId, IsPointOfContact = true
            };

            // Act
            service.ChangeOrganizationMembershipStatus(organizationMembership, newStatusId);
            var updatedOrganizationMembership = service.GetOrganizationMembershipByEmployer(employer);

            // Assert
            Assert.AreEqual(updatedOrganizationMembership.ApplicationStatusId, newStatusId);
        }
        public void Validate_PublicProperties()
        {
            var testDate = DateTime.Today;
            var user     = new ApplicationUser {
                Id = "123"
            };

            var obj = new OrganizationMembership
            {
                CreatedAt         = testDate,
                LastModifiedAt    = testDate,
                CreatedBy         = user,
                CreatedBy_Id      = "123",
                LastModifiedBy    = user,
                LastModifiedBy_Id = "123"
            };

            Assert.AreEqual(testDate, obj.CreatedAt);
            Assert.AreEqual(testDate, obj.LastModifiedAt);
            Assert.AreEqual(user.Id, obj.CreatedBy_Id);
            Assert.AreEqual(user.Id, obj.LastModifiedBy_Id);
        }
Beispiel #13
0
        public async Task <OrganizationMembership> CreateAsync(OrganizationMembership organizationMembership)
        {
            using (_loggerScope(_logger, $"PostAsync"))
                using (var client = _apiClient.CreateClient())
                {
                    var request  = new OrganizationMembershipCreateRequest(organizationMembership);
                    var response = await client.PostAsJsonAsync(ResourceUri, request).ConfigureAwait(false);

                    if (response.StatusCode != System.Net.HttpStatusCode.Created)
                    {
                        throw new HttpRequestException(
                                  $"Status code retrieved was {response.StatusCode} and not a 201 as expected" +
                                  Environment.NewLine +
                                  "See: https://developer.zendesk.com/rest_api/docs/core/tickets#create-ticket");
                    }

                    return((await response
                            .Content
                            .ReadAsAsync <OrganizationMembershipResponse>())
                           .OrganizationMembership);
                }
        }
Beispiel #14
0
        public async Task <IndividualOrganizationMembershipResponse> CreateOrganizationMembershipAsync(long userId, OrganizationMembership organization_membership)
        {
            var body = new { organization_membership };

            return(await GenericPostAsync <IndividualOrganizationMembershipResponse>($"users/{userId}/organization_memberships.json", body));
        }
Beispiel #15
0
        public IndividualOrganizationMembershipResponse CreateOrganizationMembership(long userId, OrganizationMembership organization_membership)
        {
            var body = new { organization_membership };

            return(GenericPost <IndividualOrganizationMembershipResponse>($"users/{userId}/organization_memberships.json", body));
        }
Beispiel #16
0
        public IndividualOrganizationMembershipResponse CreateOrganizationMembership(OrganizationMembership organization_membership)
        {
            var body = new { organization_membership };

            return(GenericPost <IndividualOrganizationMembershipResponse>("organization_memberships.json", body));
        }
Beispiel #17
0
 public async Task<IndividualOrganizationMembershipResponse> CreateOrganizationMembershipAsync(OrganizationMembership organization_membership)
 {
     return await GenericPostAsync<IndividualOrganizationMembershipResponse>("organization_memberships.json", new { organization_membership });
 }
 public async Task <int> ModifyOrganizationMembership(OrganizationMembership organizationMembership)
 {
     _dbContext.Entry(organizationMembership).State = EntityState.Modified;
     return(await SaveChangesAsync());
 }
Beispiel #19
0
        public async Task <IHttpActionResult> CreateOrUpdateEmployerApplication(string employerId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Check user user permission
            var userInfo      = GetUserInfo();
            var hasPermission = _identityService.HasAddPermission(userInfo, employerId);

            if (!hasPermission)
            {
                Unauthorized("Unauthorized");
            }

            var responseMessage = Request.CreateResponse(HttpStatusCode.OK);

            var userIdentity = ((ClaimsIdentity)User.Identity);
            var userId       = userIdentity.GetUserId();
            var user         = UserManager.Users.Include("Roles.Role").Include("Organizations").SingleOrDefault(s => s.Id == userId);

            // Updated existing Application Id and Status
            var organization = user.Organizations.FirstOrDefault(x => x.Employer_Id == employerId && string.IsNullOrEmpty(x.ApplicationId));
            var applcationId = Guid.NewGuid().ToString();

            if (organization != null)
            {
                organization.ApplicationId       = applcationId;
                organization.ApplicationStatusId = StatusIds.InProgress;
                responseMessage.Content          = new StringContent(string.Format("{{\"ApplicationId\": \"{0}\", \"ApplicationStatus\": \"{1}\" }}", applcationId, StatusIds.InProgress), Encoding.UTF8, "application/json");
                IdentityResult result = await UserManager.UpdateAsync(user);
            }
            else
            {
                // Create new Application if no application is in progress.
                // Application is considered to be in progress if today's date is in the same "calendar" year as the date
                // application was created and hasn't been submitted yet.
                // In other words, New application can be created for this employer if there is no application in
                // progress with the same year for application creation date & today's date
                var notSubmittedApplication = user.Organizations.LastOrDefault(x => x.Employer_Id == employerId && x.ApplicationStatusId != StatusIds.Submitted);
                if (notSubmittedApplication == null || notSubmittedApplication.CreatedAt.Year < DateTime.Now.Year)
                {
                    var org             = user.Organizations.FirstOrDefault(x => x.Employer_Id == employerId);
                    var newOrganization = new OrganizationMembership()
                    {
                        EIN                 = org.EIN,
                        Employer_Id         = org.Employer_Id,
                        IsPointOfContact    = org.IsPointOfContact,
                        ApplicationId       = applcationId,
                        ApplicationStatusId = StatusIds.InProgress
                    };

                    user.Organizations.Add(newOrganization);
                    responseMessage.Content = new StringContent(string.Format("{{\"ApplicationId\": \"{0}\", \"ApplicationStatus\": \"{1}\" }}", newOrganization.ApplicationId, StatusIds.InProgress), Encoding.UTF8, "application/json");
                    IdentityResult result = await UserManager.UpdateAsync(user);
                }
                else
                {
                    responseMessage         = Request.CreateResponse(HttpStatusCode.ExpectationFailed);
                    responseMessage.Content = new StringContent("Can not create new application");
                }
            }

            return(ResponseMessage(responseMessage));
        }
Beispiel #20
0
 public OrganizationMembershipCreateRequest(OrganizationMembership membership)
 {
     OrganizationMembership = membership;
 }