private string GetProtectedUrl(int jobId, RequestRoles requestRole, FeedbackRating?feedbackRating) { string encodedJobId = Base64Utils.Base64Encode(jobId.ToString()); string encodedRequestRoleType = Base64Utils.Base64Encode((int)requestRole); string tailUrl = $"/Feedback/PostTaskFeedbackCapture?j={encodedJobId}&r={encodedRequestRoleType}"; if (feedbackRating.HasValue) { tailUrl += $"&f={Base64Utils.Base64Encode((int)feedbackRating)}"; } var token = _linkRepository.CreateLink(tailUrl, _linkConfig.Value.ExpiryDays).Result; return(_sendGridConfig.Value.BaseUrl + "/link/" + token); }
public IHttpActionResult CreateLink(CreateLink link) { var result = _linkRepository.CreateLink(link.SymbolicName, link.UserName); // TODO: Fill route return(Created("", result)); }
public async Task <CreateLinkResponse> Handle(CreateLinkRequest request, CancellationToken cancellationToken) { return(new CreateLinkResponse() { Token = await _linkRepository.CreateLink(request.LinkDestination, request.ExpiryDays) }); }
private string GetJobUrl(int jobId, int requestId, int jobCount) { string baseUrl = _sendGridConfig.Value.BaseUrl; string encodedId = jobCount == 1 ? Base64Utils.Base64Encode(jobId.ToString()) : Base64Utils.Base64Encode(requestId.ToString()); string tailUrl = jobCount == 1 ? $"/link/j/{encodedId}" : $"/link/r/{encodedId}"; var token = _linkRepository.CreateLink(tailUrl, _linkConfig.Value.ExpiryDays).Result; return($"{baseUrl}/link/{token}"); }
private IList <Guid> CreateLinkFakes(int multiplier) { var fixture = new Fixture(); var links = fixture.Build <Link>() .OmitAutoProperties() .With(p => p.SymbolicName) .With(p => p.UserName) .CreateMany(10 * multiplier); return(links.Select(link => _linkRepository.CreateLink(link.SymbolicName, link.UserName).Id).ToList()); }
public IActionResult Create(Link link) { if (ModelState.IsValid) { link.ShortLink = _hasher.GetHash(link.OriginalLink); _linkRepository.CreateLink(link); return(Redirect("Index")); } var links = _linkRepository.GetLinks().ToList(); return(View("Index", links)); }
public IActionResult CreateLink([FromBody] CreateLinkRequest linkToCreate) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Link link = linkToCreate.GetLink(); link.ShortLink = _hasher.GetHash(link.OriginalLink); return(Ok(_linkRepository.CreateLink(link) != null)); }
public void CreateLink_DomainExist_OneArtistExist() { var domain = Builder <Domain> .CreateNew() .With(d => d.Id, Guid.NewGuid()) .With(d => d.Name, "domain") .Build(); var artists = Builder <Artist> .CreateListOfSize(2) .All() .Do(x => x.Id = Guid.NewGuid()) .Build().ToList(); // imitates existing entries using (var contex = new Context()) { contex.Domains.Add(domain); contex.Artists.Add(artists.First()); contex.SaveChanges(); } var link = Builder <Link> .CreateNew() .With(x => x.Id, Guid.NewGuid()) .With(x => x.Domain, domain) .With(x => x.DomainId, domain.Id) .With(x => x.Artists, artists) .Build(); var entity = _repository.CreateLink(link); var saved = _context.Links.Find(entity.Id); Assert.IsTrue(entity.IsActive); Assert.IsNotNull(saved); Assert.AreEqual(link.Artists.Count, saved.Artists.Count); }
private IList <Guid> CreateLinkFakes(int multiplier) { var result = new List <Guid>(); var fixture = new Fixture(); var links = fixture.Build <Link>() .OmitAutoProperties() .With(p => p.SymbolicName) .With(p => p.UserName) .CreateMany(10 * multiplier); foreach (var link in links) { result.Add(_linkRepository.CreateLink(link.SymbolicName, link.UserName).Id); } return(result); }
public async Task <EmailBuildData> PrepareTemplateData(Guid batchId, int?recipientUserId, int?jobId, int?groupId, int?requestId, Dictionary <string, string> additionalParameters, string templateName) { var requestDetails = await _connectRequestService.GetRequestDetailsAsync(requestId.Value); if (requestDetails == null) { throw new Exception($"Unable to return request details for requestId {requestId.Value}"); } var user = await _connectUserService.GetUserByIdAsync(recipientUserId.Value); var group = await _connectGroupService.GetGroup(requestDetails.RequestSummary.ReferringGroupID); string encodedRequestId = Base64Utils.Base64Encode(requestDetails.RequestSummary.RequestID.ToString()); if (requestDetails != null && user?.UserPersonalDetails != null && group?.Group != null) { var token = await _linkRepository.CreateLink($"/link/r/{encodedRequestId}", _linkConfig.Value.ExpiryDays); return(new EmailBuildData() { BaseDynamicData = new NewTaskPendingApprovalData ( user.UserPersonalDetails.FirstName, group.Group.GroupName, token ), EmailToAddress = user.UserPersonalDetails.EmailAddress, EmailToName = $"{user.UserPersonalDetails.FirstName} {user.UserPersonalDetails.LastName}", RequestID = requestDetails.RequestSummary.RequestID, GroupID = requestDetails.RequestSummary.ReferringGroupID, ReferencedJobs = new List <ReferencedJob>() { new ReferencedJob() { G = requestDetails.RequestSummary.ReferringGroupID, R = requestDetails.RequestSummary.RequestID, } } }); } throw new Exception("Unable to retrieve necessary details to build email"); }
public async Task <EmailBuildData> PrepareTemplateData(Guid batchId, int?recipientUserId, int?jobId, int?groupId, int?requestId, Dictionary <string, string> additionalParameters, string templateName) { var request = await _connectRequestService.GetRequestDetailsAsync(requestId.Value); var user = await _connectUserService.GetUserByIdAsync(recipientUserId.Value); var job = request.RequestSummary.JobBasics.Where(x => x.JobID == jobId.Value).FirstOrDefault(); var location = await _connectAddressService.GetLocationDetails(request.RequestSummary.Shift.Location, CancellationToken.None); string encodedJobId = Base64Utils.Base64Encode(jobId.Value.ToString()); var joburlToken = await _linkRepository.CreateLink($"/link/j/{encodedJobId}", _linkConfig.Value.ExpiryDays); return(new EmailBuildData() { BaseDynamicData = new ShiftReminderMessageData( title: "Volunteer shift reminder", subject: "Volunteer shift reminder", firstname: user.UserPersonalDetails.FirstName, activity: job.SupportActivity.FriendlyNameShort(), location: location.Name, shiftStartDateString: FormatDate(request.RequestSummary.Shift.StartDate), shiftEndDateString: FormatDate(request.RequestSummary.Shift.EndDate), locationAddress: string.Empty, joburlToken: joburlToken ), EmailToAddress = user.UserPersonalDetails.EmailAddress, EmailToName = $"{user.UserPersonalDetails.FirstName} {user.UserPersonalDetails.LastName}", RequestID = requestId, JobID = jobId, ReferencedJobs = new List <ReferencedJob>() { new ReferencedJob() { G = request.RequestSummary.ReferringGroupID, R = requestId, J = jobId } } }); }
public LinkModel Execute(CreateLinkArgument argument) { var domain = _domainRepository.GetDomain(argument.Link.DomainId); var code = argument.Link.Code; if (!String.IsNullOrEmpty(code)) { if (!LinkHelper.IsValidLinkCode(_storageService, domain.Name, argument.Link.Code)) { throw new ArgumentException($"Shortlink {domain.Name}/{argument.Link.Code} is already in use."); } } else { code = LinkHelper.GetUniqueLinkShortCode(_storageService, domain.Name); } Repository.Entities.Link dbLink; switch (argument.Link.MediaType) { case MediaType.Music: var uniqMediaServiceIds = argument.MusicDestinations.SelectMany(x => x.Value.Select(d => d.MediaServiceId)).Distinct().ToList(); var mediaServices = _mediaServiceRepository.GetMediaServices().Where(x => uniqMediaServiceIds.Contains(x.Id)).ToList(); var shortLink = LinkHelper.ShortLinkTemplate(domain.Name, code); string generalLinkPath = LinkHelper.LinkGeneralFilenameTemplate(shortLink); dbLink = _linkRepository.CreateLink(new Repository.Entities.Link() { Code = code, Domain = domain, DomainId = domain.Id, Id = argument.Link.Id, IsActive = argument.Link.IsActive, MediaType = argument.Link.MediaType, Title = argument.Link.Title, Url = argument.Link.Url, Artists = argument.Link.Artists?.Any() == true ? argument.Link.Artists.Select(x => new Artist() { Id = x.Id, Name = x.Name, Label = x.Label }).ToList() : null }); _storageService.Save(generalLinkPath, new StorageModel() { Id = argument.Link.Id, MediaType = argument.Link.MediaType, Url = argument.Link.Url, Title = argument.Link.Title, Destinations = argument.MusicDestinations.ToDictionary( md => md.Key, md => md.Value.Where(d => mediaServices.Select(m => m.Id).Contains(d.MediaServiceId)).Select(d => new DestinationStorageModel() { MediaServiceId = d.MediaServiceId, TrackingInfo = new TrackingStorageModel() { MediaServiceName = mediaServices.First(m => m.Id == d.MediaServiceId).Name, Artist = d.TrackingInfo?.Artist, Album = d.TrackingInfo?.Album, SongTitle = d.TrackingInfo?.SongTitle, Mobile = d.TrackingInfo?.Mobile, Web = d.TrackingInfo?.Web, } }).ToList()) }); break; case MediaType.Ticket: var shortLinkTicket = LinkHelper.ShortLinkTemplate(domain.Name, code); string generalLinkPathTicket = LinkHelper.LinkGeneralFilenameTemplate(shortLinkTicket); dbLink = _linkRepository.CreateLink(new Repository.Entities.Link() { Id = argument.Link.Id, Code = code, Domain = domain, DomainId = domain.Id, IsActive = true, MediaType = argument.Link.MediaType, Title = argument.Link.Title, Url = argument.Link.Url, Artists = argument.Link.Artists?.Any() == true ? argument.Link.Artists.Select(x => new Artist() { Id = x.Id, Name = x.Name, Label = x.Label }).ToList() : null }); _storageService.Save(generalLinkPathTicket, new Models.StorageModel.Ticket.StorageModel() { Id = argument.Link.Id, MediaType = argument.Link.MediaType, Url = argument.Link.Url, Title = argument.Link.Title, Destinations = argument.TicketDestinations.ToDictionary( md => md.Key, md => md.Value.Select(d => new Models.StorageModel.Ticket.DestinationStorageModel() { ShowId = d.ShowId, MediaServiceId = d.MediaServiceId, Url = d.Url, Date = d.Date, Location = d.Location, Venue = d.Venue }).ToList()) }); break; default: throw new NotSupportedException($"Link type {argument.Link.MediaType} is not supported."); } return(new LinkModel() { Id = dbLink.Id, Code = code, DomainId = domain.Id, IsActive = dbLink.IsActive, MediaType = dbLink.MediaType, Title = dbLink.Title, Url = dbLink.Url, Artists = dbLink.Artists?.Any() == true ? dbLink.Artists.Select(x => new ArtistModel() { Id = x.Id, Name = x.Name, Label = x.Label }).ToList() : null }); }
public bool CreateLink(Link link) { _linkRepository.CreateLink(link); return(true); }