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)); } }
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)); } }
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)); } }
// 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)); } }