예제 #1
0
        public IHttpActionResult AssignUsers(Guid id, OrganisationAssignmentDTO model)
        {
            if (id == Guid.Empty)
            {
                return(BadRequest("id is empty"));
            }

            var org = Organisations.Find(id);

            if (org == null)
            {
                return(NotFound());
            }

            var subscriptionService = new SubscriptionService(UnitOfWork);

            subscriptionService.MoveUsersToOrganisation(org, model.OrgUsers);

            try
            {
                // TODO: notify the user by email.
                // notify orgUser about joining organisation
                // notify orgAdmin about new user

                UnitOfWork.Save();
                MemoryCacher.DeleteStartingWith(CACHE_KEY);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
예제 #2
0
        public IHttpActionResult Get(Guid id)
        {
            if (id == Guid.Empty)
            {
                return(Ok(Mapper.Map <OrganisationDTO>(new Organisation())));
            }

            var cacheKey   = $"{CACHE_KEY}_{id}";
            var cacheEntry = MemoryCacher.GetValue(cacheKey);

            if (cacheEntry == null)
            {
                var organisation = Organisations.Find(id);
                if (organisation == null)
                {
                    return(NotFound());
                }

                var result = Mapper.Map <OrganisationDTO>(organisation);
                MemoryCacher.Add(cacheKey, result, DateTimeOffset.UtcNow.AddMinutes(1));

                return(Ok(result));
            }
            else
            {
                var result = (OrganisationDTO)cacheEntry;
                return(new CachedResult <OrganisationDTO>(result, TimeSpan.FromMinutes(1), this));
            }
        }
예제 #3
0
        public IHttpActionResult RevokeUser(Guid id, Guid userId)
        {
            if (id == Guid.Empty)
            {
                return(BadRequest("id is empty"));
            }

            if (userId == Guid.Empty)
            {
                return(BadRequest("user id is empty"));
            }

            var org = Organisations.Find(id);

            if (org == null)
            {
                return(NotFound());
            }

            var orgUser = UnitOfWork.OrgUsersRepository.Find(userId);

            if (orgUser == null)
            {
                return(NotFound());
            }

            // root users cannot be removed from an organization!
            if (orgUser.IsRootUser)
            {
                return(BadRequest("Root users cannot be removed from organizations!"));
            }

            var subscriptionService = new SubscriptionService(UnitOfWork);

            subscriptionService.RemoveUserFromOrganization(org, orgUser);

            try
            {
                // send email notifications
                NotifyUserAboutLeavingOrganisation(org.Name, orgUser.Email);
                NotifyOrgAdminAboutUserLeaving(org, orgUser.UserName);

                UnitOfWork.Save();
                MemoryCacher.DeleteStartingWith(CACHE_KEY);
                MemoryCacher.DeleteStartingWith("ORG_USERS");

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
예제 #4
0
        // PUT api/organisations/{id}
        public IHttpActionResult Put(Guid id, [FromBody] OrganisationDTO value)
        {
            if (id == Guid.Empty)
            {
                return(BadRequest("id is empty"));
            }

            var organisation = Organisations.Find(id);

            if (organisation == null)
            {
                return(NotFound());
            }

            organisation.Name = value.Name;
            organisation.SubscriptionEnabled     = value.SubscriptionEnabled;
            organisation.SubscriptionMonthlyRate = value.SubscriptionMonthlyRate;
            organisation.AddressLine1            = value.AddressLine1;
            organisation.AddressLine2            = value.AddressLine2;
            organisation.Town      = value.Town;
            organisation.County    = value.County;
            organisation.Postcode  = value.Postcode;
            organisation.TelNumber = value.TelNumber;

            try
            {
                Organisations.InsertOrUpdate(organisation);
                UnitOfWork.Save();

                MemoryCacher.DeleteStartingWith(CACHE_KEY);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }