Example #1
0
        private async Task <bool> IsCallingUserIsKeyContact(HttpRequest request)
        {
            var userId = JWTAttributesService.GetSubject(request);
            var exists = (await _keyContactRepo.FindByUserId(userId)).ToList().Where(x => x.IsPending == false).ToList();

            return(exists.Count > 0);
        }
Example #2
0
        public async Task <IActionResult> Get()
        {
            var userId   = JWTAttributesService.GetSubject(Request);
            var playList = await _playListRepo.FindById(userId);

            return(Ok(playList));
        }
Example #3
0
        public IActionResult AddPlaylist(Playlist playlist)
        {
            var userId = JWTAttributesService.GetSubject(Request);

            playlist.Id = userId;
            _playListRepo.UpdateOne(playlist);
            return(Ok(playlist));
        }
        public IActionResult UserHasPendingOrg()
        {
            var orgs = _pendingOrgRepository.GetAll();

            var userHasPendingOrgs = orgs.Any(org => org.UserId == JWTAttributesService.GetSubject(Request));

            return(Ok(userHasPendingOrgs));
        }
Example #5
0
        public async Task <IActionResult> AddKeyContact([FromRoute] string orgId)
        {
            await _keyContactRepository.InsertOne(new KeyContacts()
            {
                Id = Guid.NewGuid().ToString(), OrgId = orgId, UserId = JWTAttributesService.GetSubject(Request), UserEmail = JWTAttributesService.GetEmail(Request)
            });

            return(Ok());
        }
Example #6
0
        public async Task <IActionResult> GetOrgsIAmRequestingToJoin()
        {
            var userId     = JWTAttributesService.GetSubject(Request);
            var responnses = await _keyContactRepository.FindByUserId(userId);

            var nonPending = responnses.Where(x => x.IsPending == true);

            return(Ok(nonPending));
        }
        public async Task <IActionResult> GetById(string id)
        {
            var userId = JWTAttributesService.GetSubject(Request);
            var org    = await _orgRepository.FindById(id);

            var keyContactList = await _keyContactRepo.FindByOrgId(id);

            return(Ok(org));
        }
Example #8
0
 public async Task SendOrgApprovedEmail(EmailAddress from, EmailAddress to, string orgName, string orgId)
 {
     var templateParameters = new TemplateParameters
     {
         OpenReferralAppUrl = _settings.BaseAddress + $"manage-organisation/{orgId}",
         OrganisationName   = orgName,
         UserName           = JWTAttributesService.GetEmail(_httpContextAccessor.HttpContext.Request),
     };
     var client   = new SendGridClient(_apiKey);
     var msg      = MailHelper.CreateSingleTemplateEmail(from, to, _settings.OrgApprovedTemplate, templateParameters);
     var response = await client.SendEmailAsync(msg);
 }
        public async Task <IActionResult> Delete(string id)
        {
            if (JWTAttributesService.GetSubject(Request) != _configuration["Admin:UserId"])
            {
                return(Forbid());
            }

            var org = await _pendingOrgRepository.FindById(id);

            await _pendingOrgRepository.DeleteOne(org);

            return(Ok());
        }
Example #10
0
        public async Task <IActionResult> GetPendingKeyContacts()
        {
            var callingUserId = JWTAttributesService.GetSubject(Request);
            var contacts      = await _keyContactRepository.FindByUserId(callingUserId);

            var list = new List <KeyContacts>();

            foreach (var contact in contacts)
            {
                var x = (await _keyContactRepository.FindByOrgId(contact.OrgId)).Where(x => x.UserId != callingUserId && x.IsPending == true);
                list.AddRange(x);
            }

            return(Ok(list));
        }
        public IActionResult Get(string text = null)
        {
            if (JWTAttributesService.GetSubject(Request) != _configuration["Admin:UserId"])
            {
                return(Forbid());
            }

            var orgs = _pendingOrgRepository.GetAll();

            if (text != null)
            {
                var filteredList = orgs.Where(org => org.Name.ToLower().Contains(text.ToLower())).ToList();
                return(Ok(filteredList));
            }

            return(Ok(orgs));
        }
Example #12
0
        public async Task <IActionResult> FetchAdminRequests()
        {
            var userId = JWTAttributesService.GetSubject(Request);
            var orgs   = await _keyContactRepo.FindByUserId(userId);

            var pendingrequests = new List <OrganisationMember>();

            foreach (var o in orgs)
            {
                if (!o.IsPending)
                {
                    var allRequests = _orgMemberRepository.GetAllPendingRequests(o.OrgId);
                    pendingrequests.AddRange(allRequests.Where(x => x.Status != OrganisationMembersStatus.JOINED && x.Status != OrganisationMembersStatus.DENIED));
                }
            }

            return(Ok(pendingrequests));
        }
        public async Task <IActionResult> Post([FromBody] PendingOrganisation organisation, [FromServices] IOptions <ApiBehaviorOptions> apiBehaviorOptions)
        {
            var currentOrgs = _orgRepository.GetAll();
            var pendingOrgs = _pendingOrgRepository.GetAll();

            try
            {
                Guid.Parse(organisation.Id);
            }
            catch (Exception _)
            {
                ModelState.AddModelError(nameof(Organisation.Id), "Organization Id is not a valid Guid");
                return(apiBehaviorOptions.Value.InvalidModelStateResponseFactory(ControllerContext));
            }
            if (organisation.CharityNumber > 0 &&
                (currentOrgs.Any(org => org.CharityNumber == organisation.CharityNumber) ||
                 pendingOrgs.Any(org => org.CharityNumber == organisation.CharityNumber)))
            {
                ModelState.AddModelError(nameof(Organisation.CharityNumber), "Charity number already exists.");
                return(apiBehaviorOptions.Value.InvalidModelStateResponseFactory(ControllerContext));
            }
            if (currentOrgs.Any(org => org.Name == organisation.Name) || pendingOrgs.Any(org => org.Name == organisation.Name))
            {
                ModelState.AddModelError(nameof(Organisation.Name), "Organisation name already exists.");
                return(apiBehaviorOptions.Value.InvalidModelStateResponseFactory(ControllerContext));
            }
            else
            {
                organisation.UserId    = JWTAttributesService.GetSubject(Request);
                organisation.UserEmail = JWTAttributesService.GetEmail(Request);
                await _pendingOrgRepository.InsertOne(organisation);

                await _sendgridSender.SendOrgRequestEmail(
                    new SendGrid.Helpers.Mail.EmailAddress("*****@*****.**"),
                    new SendGrid.Helpers.Mail.EmailAddress(_configuration["Admin:EmailAddress"]),
                    organisation.Name
                    );

                return(Accepted(organisation));
            }
        }
Example #14
0
        public async Task <IActionResult> AddAdminRequestToKeyContact([FromRoute] string orgId)
        {
            await _keyContactRepository.InsertOne(new KeyContacts()
            {
                Id = Guid.NewGuid().ToString(), OrgId = orgId, UserId = JWTAttributesService.GetSubject(Request), UserEmail = JWTAttributesService.GetEmail(Request), IsAdmin = true, IsPending = true
            });

            var keyContacts = await _keyContactRepository.FindApprovedByOrgId(orgId);

            var org = await _organisationRepository.FindById(orgId);

            foreach (var kc in keyContacts)
            {
                await _sendgridSender.SendSingleTemplateEmail(
                    new SendGrid.Helpers.Mail.EmailAddress("*****@*****.**"),
                    new SendGrid.Helpers.Mail.EmailAddress(kc.UserEmail),
                    org.Name
                    );
            }
            return(Ok());
        }
        public async Task <IActionResult> VerifyPendingOrganisation(string id)
        {
            var org = await _pendingOrgRepository.FindById(id);

            if (JWTAttributesService.GetSubject(Request) != _configuration["Admin:UserId"])
            {
                return(Forbid());
            }
            Organisation newOrg = new Organisation
            {
                Id            = org.Id,
                Description   = org.Description,
                CharityNumber = org.CharityNumber,
                Name          = org.Name,
                ServicesIds   = org.ServicesIds,
                Url           = org.Url
            };

            await _orgRepository.InsertOne(newOrg);

            await _keyContactRepo.InsertOne(new KeyContacts()
            {
                Id = Guid.NewGuid().ToString(), OrgId = org.Id, UserId = org.UserId, UserEmail = org.UserEmail
            });

            await _pendingOrgRepository.DeleteOne(org);

            var publishedOrg = _registerManagmentServiceClient.CreateOrganisation(org);


            await _sendgridSender.SendOrgApprovedEmail(
                new SendGrid.Helpers.Mail.EmailAddress("*****@*****.**"),
                new SendGrid.Helpers.Mail.EmailAddress(org.UserEmail),
                org.Name,
                org.Id
                );

            return(Accepted(publishedOrg));
        }
Example #16
0
        public async Task <IActionResult> CreateRequest([FromRoute] string orgId)
        {
            // Restricts the requests so you only get one request per org per user ID
            var userId = JWTAttributesService.GetSubject(Request);
            var email  = JWTAttributesService.GetEmail(Request);
            var existingRequestsForUser = _orgMemberRepository.GetRequestsAboutUser(userId).Where(x => x.OrgId == orgId);

            if (existingRequestsForUser.Count() == 0)
            {
                var orgmemberRequest = new OrganisationMember()
                {
                    Id = Guid.NewGuid().ToString(), OrgId = orgId, Status = OrganisationMembersStatus.REQUESTED, UserId = userId, Email = email
                };
                await _orgMemberRepository.InsertOne(orgmemberRequest);
            }
            else
            {
                var request = existingRequestsForUser.First();
                request.Status = OrganisationMembersStatus.REQUESTED;
                await _orgMemberRepository.UpdateOne(request);
            }

            // Get Key Contact for org
            var keyContacts = await _keyContactRepo.FindApprovedByOrgId(orgId);

            var org = await _orgRepository.FindById(orgId);

            foreach (var kc in keyContacts)
            {
                await _sendgridSender.SendSingleTemplateEmail(
                    new SendGrid.Helpers.Mail.EmailAddress("*****@*****.**"),
                    new SendGrid.Helpers.Mail.EmailAddress(kc.UserEmail),
                    org.Name
                    );
            }

            return(Ok());
        }
        public async Task <IActionResult> Post([FromBody] Service service, [FromServices] IOptions <ApiBehaviorOptions> apiBehaviorOptions)
        {
            var userId = JWTAttributesService.GetSubject(Request);
            var authorizationResult = await _authorizationService.AuthorizeAsync(User, service.OrganizationId, AuthzPolicyNames.MustBeOrgAdmin);

            if (!authorizationResult.Succeeded)
            {
                return(Forbid());
            }

            try
            {
                Guid.Parse(service.Id);
            }
            catch (Exception _)
            {
                ModelState.AddModelError(nameof(Service.Id), "Service Id is not a valid Guid");
                return(apiBehaviorOptions.Value.InvalidModelStateResponseFactory(ControllerContext));
            }
            var publishedService = _registerManagmentServiceClient.CreateService(service);
            await _serRepository.InsertOne(publishedService);

            return(Accepted(publishedService));
        }
Example #18
0
        public async Task <IActionResult> FetchRequestsAboutMe()
        {
            var userId = JWTAttributesService.GetSubject(Request);

            return(Ok(_orgMemberRepository.GetRequestsAboutUser(userId)));
        }