/// <summary> /// Constructor that takes 3 params. /// </summary> /// <param name="yourZendeskUrl">Will be formated to "https://yoursite.zendesk.com/api/v2"</param> /// <param name="user"></param> /// <param name="password">LEAVE BLANK IF USING TOKEN</param> /// <param name="apiToken">Optional Param which is used if specified instead of the password</param> public ZendeskApi(string yourZendeskUrl, string user, string password = "", string apiToken = "") { var formattedUrl = GetFormattedZendeskUrl(yourZendeskUrl).AbsoluteUri; Tickets = new Tickets(formattedUrl, user, password, apiToken); Attachments = new Attachments(formattedUrl, user, password, apiToken); Views = new Views(formattedUrl, user, password, apiToken); Users = new Users(formattedUrl, user, password, apiToken); Requests = new Requests.Requests(formattedUrl, user, password, apiToken); Groups = new Groups(formattedUrl, user, password, apiToken); CustomAgentRoles = new CustomAgentRoles(formattedUrl, user, password, apiToken); Organizations = new Organizations(formattedUrl, user, password, apiToken); Search = new Search(formattedUrl, user, password, apiToken); Tags = new Tags(formattedUrl, user, password, apiToken); Forums = new Forums(formattedUrl, user, password, apiToken); Categories = new Categories(formattedUrl, user, password, apiToken); Topics = new Topics(formattedUrl, user, password, apiToken); AccountsAndActivity = new AccountsAndActivity(formattedUrl, user, password, apiToken); JobStatuses = new JobStatuses(formattedUrl, user, password, apiToken); Locales = new Locales(formattedUrl, user, password, apiToken); Macros = new Macros(formattedUrl, user, password, apiToken); SatisfactionRatings = new SatisfactionRatings(formattedUrl, user, password, apiToken); SharingAgreements = new SharingAgreements(formattedUrl, user, password, apiToken); Triggers = new Triggers(formattedUrl, user, password, apiToken); ZendeskUrl = formattedUrl; }
public ZendeskApi(string yourZendeskUrl, string user, string password) { Tickets = new Tickets(yourZendeskUrl, user, password); Attachments = new Attachments(yourZendeskUrl, user, password); Views = new Views(yourZendeskUrl, user, password); Users = new Users(yourZendeskUrl, user, password); Requests = new Requests.Requests(yourZendeskUrl, user, password); Groups = new Groups(yourZendeskUrl, user, password); CustomAgentRoles = new CustomAgentRoles(yourZendeskUrl, user, password); Organizations = new Organizations(yourZendeskUrl, user, password); Search = new Search(yourZendeskUrl, user, password); Tags = new Tags(yourZendeskUrl, user, password); Forums = new Forums(yourZendeskUrl, user, password); Categories = new Categories(yourZendeskUrl, user, password); Topics = new Topics(yourZendeskUrl, user, password); AccountsAndActivity = new AccountsAndActivity(yourZendeskUrl, user, password); JobStatuses = new JobStatuses(yourZendeskUrl, user, password); Locales = new Locales(yourZendeskUrl, user, password); Macros = new Macros(yourZendeskUrl, user, password); SatisfactionRatings = new SatisfactionRatings(yourZendeskUrl, user, password); SharingAgreements = new SharingAgreements(yourZendeskUrl, user, password); Triggers = new Triggers(yourZendeskUrl, user, password); ZendeskUrl = yourZendeskUrl; }
/// <summary> /// Constructor that takes 6 params. /// </summary> /// <param name="yourZendeskUrl">Will be formated to "https://yoursite.zendesk.com/api/v2"</param> /// <param name="user">Email adress of the user</param> /// <param name="password">LEAVE BLANK IF USING TOKEN</param> /// <param name="apiToken">Used if specified instead of the password</param> /// <param name="locale">Locale to use for Help Center requests. Defaults to "en-us" if no value is provided.</param> public ZendeskApi(string yourZendeskUrl, string user, string password, string apiToken, string locale, string p_OAuthToken) { var formattedUrl = GetFormattedZendeskUrl(yourZendeskUrl).AbsoluteUri; Tickets = new Tickets(formattedUrl, user, password, apiToken, p_OAuthToken); Attachments = new Attachments(formattedUrl, user, password, apiToken, p_OAuthToken); Brands = new Brands(formattedUrl, user, password, apiToken, p_OAuthToken); Views = new Views(formattedUrl, user, password, apiToken, p_OAuthToken); Users = new Users(formattedUrl, user, password, apiToken, p_OAuthToken); Requests = new Requests.Requests(formattedUrl, user, password, apiToken, p_OAuthToken); Groups = new Groups(formattedUrl, user, password, apiToken, p_OAuthToken); CustomAgentRoles = new CustomAgentRoles(formattedUrl, user, password, apiToken, p_OAuthToken); Organizations = new Organizations(formattedUrl, user, password, apiToken, p_OAuthToken); Search = new Search(formattedUrl, user, password, apiToken, p_OAuthToken); Tags = new Tags(formattedUrl, user, password, apiToken, p_OAuthToken); AccountsAndActivity = new AccountsAndActivity(formattedUrl, user, password, apiToken, p_OAuthToken); JobStatuses = new JobStatuses(formattedUrl, user, password, apiToken, p_OAuthToken); Locales = new Locales(formattedUrl, user, password, apiToken, p_OAuthToken); Macros = new Macros(formattedUrl, user, password, apiToken, p_OAuthToken); SatisfactionRatings = new SatisfactionRatings(formattedUrl, user, password, apiToken, p_OAuthToken); SharingAgreements = new SharingAgreements(formattedUrl, user, password, apiToken, p_OAuthToken); Triggers = new Triggers(formattedUrl, user, password, apiToken, p_OAuthToken); HelpCenter = new HelpCenterApi(formattedUrl, user, password, apiToken, locale, p_OAuthToken); Voice = new Voice(formattedUrl, user, password, apiToken, p_OAuthToken); Schedules = new Schedules(formattedUrl, user, password, apiToken, p_OAuthToken); Targets = new Targets(formattedUrl, user, password, apiToken, p_OAuthToken); Automations = new Automations(formattedUrl, user, password, apiToken, p_OAuthToken); ZendeskUrl = formattedUrl; }
public static string FriendlyName(this JobStatuses status) { return(status switch { JobStatuses.New => "Pending Approval", JobStatuses.InProgress => "In Progress", _ => status.ToString() });
private void constructMe(int jobId, JobStatuses jobStatus, JobBatchModes jobBatchMode, int jobBatchSize, int jobBatchCounter, DateTime timestamp) { this.JobID = jobId; this.JobStatus = jobStatus; this.JobBatchMode = jobBatchMode; this.JobBatchSize = jobBatchSize; this.JobBatchCounter = jobBatchCounter; this.TimeStamp = timestamp; }
public static string Icon(this JobStatuses jobStatus) { return(jobStatus switch { JobStatuses.New => "new.svg", JobStatuses.Open => "open.svg", JobStatuses.Accepted => "accepted.svg", JobStatuses.InProgress => "inprogress.svg", JobStatuses.Done => "complete.svg", JobStatuses.Cancelled => "cancelled.svg", _ => throw new ArgumentException(message: $"Unexpected JobStatuses value: {jobStatus}", paramName: nameof(jobStatus)) });
public IActionResult GetStatusChangePopup(string j, string rq, JobStatuses s) { if (string.IsNullOrEmpty(j)) { int requestId = Base64Utils.Base64DecodeToInt(rq); return(ViewComponent("JobStatusChangePopup", new { requestId, targetStatus = s })); } else { int jobId = Base64Utils.Base64DecodeToInt(j); return(ViewComponent("JobStatusChangePopup", new { jobId, targetStatus = s })); } }
public async Task <UpdateJobStatusOutcome?> UpdateRequestStatusAsync(int requestId, JobStatuses status, int createdByUserId, CancellationToken cancellationToken) { UpdateJobStatusOutcome?outcome = status switch { JobStatuses.Done => await _requestHelpRepository.PutUpdateRequestStatusToDone(requestId, createdByUserId), JobStatuses.Cancelled => await _requestHelpRepository.PutUpdateRequestStatusToCancelled(requestId, createdByUserId), _ => throw new ArgumentException(message: $"Invalid JobStatuses value for Request: {status}", paramName: nameof(status)), }; if (outcome == UpdateJobStatusOutcome.Success || outcome == UpdateJobStatusOutcome.AlreadyInThisStatus) { TriggerCacheRefresh(createdByUserId, cancellationToken); } return(outcome); }
public async Task <UpdateJobStatusOutcome?> UpdateJobStatusAsync(int jobID, JobStatuses status, int createdByUserId, int?volunteerUserId, CancellationToken cancellationToken) { UpdateJobStatusOutcome?outcome = status switch { JobStatuses.Accepted => await _requestHelpRepository.UpdateJobStatusToAcceptedAsync(jobID, createdByUserId, volunteerUserId.Value), JobStatuses.InProgress => await UpdateJobStatusToInProgressAsync(jobID, createdByUserId, volunteerUserId.Value, cancellationToken), JobStatuses.Done => await _requestHelpRepository.UpdateJobStatusToDoneAsync(jobID, createdByUserId), JobStatuses.Cancelled => await _requestHelpRepository.UpdateJobStatusToCancelledAsync(jobID, createdByUserId), JobStatuses.Open => await _requestHelpRepository.UpdateJobStatusToOpenAsync(jobID, createdByUserId), JobStatuses.New => await _requestHelpRepository.UpdateJobStatusToNewAsync(jobID, createdByUserId), _ => throw new ArgumentException(message: $"Invalid JobStatuses value: {status}", paramName: nameof(status)), }; if (outcome == UpdateJobStatusOutcome.Success || outcome == UpdateJobStatusOutcome.AlreadyInThisStatus) { TriggerCacheRefresh(createdByUserId, cancellationToken); } return(outcome); }
public async Task <ActionResult <SetJobStatusResult> > SetJobStatus(string j, string rq, JobStatuses s, string r, string u, CancellationToken cancellationToken) { try { var user = await _authService.GetCurrentUser(HttpContext, cancellationToken); UpdateJobStatusOutcome?outcome; bool requestFeedback = false; if (string.IsNullOrEmpty(j)) { int requestId = Base64Utils.Base64DecodeToInt(rq); outcome = await _requestService.UpdateRequestStatusAsync(requestId, s, user.ID, cancellationToken); } else { RequestRoles requestRole = (RequestRoles)Base64Utils.Base64DecodeToInt(r); int? targetUserId = null; if (s == JobStatuses.Accepted || s == JobStatuses.InProgress) { targetUserId = (requestRole == RequestRoles.Volunteer ? user.ID : Base64Utils.Base64DecodeToInt(u)); } int jobId = Base64Utils.Base64DecodeToInt(j); outcome = await _requestService.UpdateJobStatusAsync(jobId, s, user.ID, targetUserId, cancellationToken); var job = await _requestService.GetJobSummaryAsync(jobId, cancellationToken); if (job.RequestType.Equals(RequestType.Task)) { requestFeedback = (await GetJobFeedbackStatus(jobId, user.ID, requestRole, cancellationToken)).FeedbackDue; } } switch (outcome) { case UpdateJobStatusOutcome.AlreadyInThisStatus: case UpdateJobStatusOutcome.Success: return(new SetJobStatusResult { NewStatus = s.FriendlyName(), RequestFeedback = requestFeedback }); case UpdateJobStatusOutcome.BadRequest: return(StatusCode(400)); case UpdateJobStatusOutcome.Unauthorized: return(StatusCode(401)); default: return(StatusCode(500)); } } catch (Exception ex) { _logger.LogError("Exception in SetRequestStatus", ex); return(StatusCode(500)); } }
public MID_0035(int jobId, JobStatuses jobStatus, JobBatchModes jobBatchMode, int jobBatchSize, int jobBatchCounter, DateTime timestamp) : base(length, MID, revision) { this.constructMe(jobId, jobStatus, jobBatchMode, jobBatchSize, jobBatchCounter, timestamp); }
public async Task <IViewComponentResult> InvokeAsync(int jobId, int requestId, JobStatuses targetStatus, CancellationToken cancellationToken) { JobSummary job = null; if (jobId > 0) { job = await _requestService.GetJobSummaryAsync(jobId, cancellationToken); requestId = job.RequestID; } var request = await _requestService.GetRequestSummaryAsync(requestId, cancellationToken); var user = await _authService.GetCurrentUser(HttpContext, cancellationToken); bool userIsAdmin = await _groupMemberService.GetUserHasRole(user.ID, request.ReferringGroupID, GroupRoles.TaskAdmin, true, cancellationToken); JobStatusChangePopupViewModel vm = await BuildVm(request, job, targetStatus, cancellationToken); if (job == null) { return((request.SingleJobStatus(), targetStatus, userIsAdmin) switch { (_, JobStatuses.Done, true) => View("Admin_MarkRequestAsDonePopup", vm), (_, JobStatuses.Cancelled, true) => View("Admin_CancelRequestPopup", vm), _ => throw new Exception($"Unhandled status/admin combination for request: {request.SingleJobStatus()} -> {targetStatus} / admin:{userIsAdmin}") });
public async Task <EmailBuildData> PrepareTemplateData(Guid batchId, int?recipientUserId, int?jobId, int?groupId, int?requestId, Dictionary <string, string> additionalParameters, string templateName) { var job = _connectRequestService.GetJobDetailsAsync(jobId.Value).Result; // Recipient RequestRoles emailRecipientRequestRole = (RequestRoles)Enum.Parse(typeof(RequestRoles), additionalParameters["RequestRole"]); string emailToAddress = string.Empty; string emailToFullName = string.Empty; string emailToFirstName = string.Empty; switch (emailRecipientRequestRole) { case RequestRoles.Volunteer: var user = await _connectUserService.GetUserByIdAsync(recipientUserId.Value); emailToFirstName = user.UserPersonalDetails.FirstName; emailToAddress = user.UserPersonalDetails.EmailAddress; emailToFullName = $"{user.UserPersonalDetails.FirstName} {user.UserPersonalDetails.LastName}"; break; case RequestRoles.Requestor: emailToFirstName = job.Requestor.FirstName; emailToAddress = job.Requestor.EmailAddress; emailToFullName = $"{job.Requestor.FirstName} {job.Requestor.LastName}"; break; case RequestRoles.Recipient: emailToFirstName = job.Recipient.FirstName; emailToAddress = job.Recipient.EmailAddress; emailToFullName = $"{job.Recipient.FirstName} {job.Recipient.LastName}"; break; } // Change summary additionalParameters.TryGetValue("FieldUpdated", out string fieldUpdated); JobStatuses previousStatus = _connectRequestService.PreviousJobStatus(job); RequestRoles changedByRole = GetChangedByRole(job); string supportActivity = job.JobSummary.SupportActivity.FriendlyNameShort(); bool showJobUrl = emailRecipientRequestRole == RequestRoles.Volunteer || emailRecipientRequestRole == RequestRoles.GroupAdmin || (emailRecipientRequestRole == RequestRoles.Requestor && job.JobSummary.RequestorDefinedByGroup); string jobUrl = showJobUrl ? GetJobUrl(jobId.Value) : string.Empty; // First table List <TaskDataItem> importantDataList = new List <TaskDataItem>(); AddIfNotNullOrEmpty(importantDataList, "Status", job.JobSummary.JobStatus.FriendlyName().ToTitleCase()); AddIfNotNullOrEmpty(importantDataList, "Reference", GetReference(emailRecipientRequestRole, job)); // Second table string requestedBy = GetRequestedBy(emailRecipientRequestRole, job); string helpRecipient = GetHelpRecipient(emailRecipientRequestRole, job); List <TaskDataItem> otherDataList = new List <TaskDataItem>(); AddIfNotNullOrEmpty(otherDataList, "Request type", supportActivity.ToTitleCase()); AddIfNotNullOrEmpty(otherDataList, "Help needed", GetDueDate(job)); AddIfNotNullOrEmpty(otherDataList, "Help needed", GetShiftDetails(job)); AddIfNotNullOrEmpty(otherDataList, "Location", GetLocationDetails(job)); AddIfNotNullOrEmpty(otherDataList, "Requested by", requestedBy); AddIfNotNullOrEmpty(otherDataList, "Help requested from", await GetHelpRequestedFrom(job)); if (!helpRecipient.Equals(requestedBy)) { AddIfNotNullOrEmpty(otherDataList, "Recipient", helpRecipient); } AddIfNotNullOrEmpty(otherDataList, "Volunteer", await GetVolunteer(emailRecipientRequestRole, job)); return(new EmailBuildData() { BaseDynamicData = new TaskUpdateSimplifiedData ( $"A {supportActivity} request has been updated", $"A {supportActivity} request has been updated", emailToFirstName, changedByRole == RequestRoles.GroupAdmin ? "group administrator" : "volunteer", fieldUpdated.ToLower(), showJobUrl, jobUrl, importantDataList, otherDataList, faceCoveringComplete: job.JobSummary.SupportActivity == SupportActivities.FaceMask && job.JobSummary.JobStatus == JobStatuses.Done, previouStatusCompleteAndNowInProgress: previousStatus == JobStatuses.Done && job.JobSummary.JobStatus == JobStatuses.InProgress, previouStatusInProgressAndNowOpen: previousStatus == JobStatuses.InProgress && job.JobSummary.JobStatus == JobStatuses.Open, statusNowCancelled: job.JobSummary.JobStatus == JobStatuses.Cancelled, GetFeedback(job, emailRecipientRequestRole) ), EmailToAddress = emailToAddress, EmailToName = emailToFullName, JobID = job.JobSummary.JobID, RequestID = job.JobSummary.RequestID, GroupID = job.JobSummary.ReferringGroupID, ReferencedJobs = new List <ReferencedJob>() { new ReferencedJob() { G = job.JobSummary.ReferringGroupID, R = job.JobSummary.RequestID, J = job.JobSummary.JobID } } }); }