public async Task <JobRequestResponse> JobRequest(JobRequestRequest request) { var suggestion = await _dbContext.ArchiveItems .Where(x => x.CurrentRedundancy == 0 && !_dbContext.RecentSuggestions.Any(y => y.ItemId == x.Identifier)) .OrderByDescending(x => x.Priority) .FirstOrDefaultAsync(); var user = await GetUserAsync(request); if (suggestion != null) { _dbContext.RecentSuggestions.Add(new RecentSuggestion { ItemId = suggestion.Identifier, UserId = user.UserId, SuggestionDate = DateTime.UtcNow }); } await _dbContext.SaveChangesAsync(); return(new JobRequestResponse { RetryInSeconds = suggestion != null ? 10 : 60, Suggestions = suggestion != null ? new List <ItemDownloadSuggestion> { new ItemDownloadSuggestion { ItemName = suggestion.Identifier } } : null }); }
public async Task <JobRequestResponse> CreateRequest(JobRequestRequest jobRequest) { JobRequestResponse result = null; IRestResponse response = null; if (jobRequest != null) { result = new JobRequestResponse(); var baseUrl = GlobalConfig.Instance.GetByKey("com.call.aladdin.project.api.url")?.ToString(); var apiKey = GlobalConfig.Instance.GetByKey("com.call.aladdin.project.api.key")?.ToString(); if (!string.IsNullOrEmpty(baseUrl) && !string.IsNullOrEmpty(apiKey)) { var fullUrl = baseUrl + "/requests/"; var requestorUUID = jobRequest.RequestorSystemUUID; var title = jobRequest.Title; var scopeOfWork = jobRequest.ScopeOfWork; var address = jobRequest.Address; var city = jobRequest.City; var country = jobRequest.Country; var longitude = jobRequest.Longitude; var latitude = jobRequest.Latitude; var workCategory = jobRequest.Category; var preferredStartTime = jobRequest.StartDateTime; var preferredEndTime = jobRequest.EndDateTime; var client = new RestClient(fullUrl); var request = new RestRequest(Method.POST); request.AddHeader("cache-control", "no-cache"); request.AddHeader("authorization", "Basic " + apiKey); request.AddParameter("requestor_uuid", requestorUUID); request.AddParameter("title", title); request.AddParameter("scope_of_work", scopeOfWork); request.AddParameter("address", address); request.AddParameter("city", city); request.AddParameter("country", country); request.AddParameter("longitude", longitude); request.AddParameter("latitude", latitude); request.AddParameter("work_category", workCategory); request.AddParameter("preferred_start_datetime", preferredStartTime); request.AddParameter("preferred_end_datetime", preferredEndTime); try { if (File.Exists(jobRequest.ImagePath)) { using (var fs = File.OpenRead(jobRequest.ImagePath)) { var bytes = Utilities.StreamToBytes(fs); request.AddFile("image", bytes, Guid.NewGuid().ToString() + ".jpg", "image/jpg"); } } if (File.Exists(jobRequest.VoiceNotePath)) { using (var fs = File.OpenRead(jobRequest.VoiceNotePath)) { var bytes = Utilities.StreamToBytes(fs); request.AddFile("voice_note", bytes, Guid.NewGuid().ToString() + ".mp3", "audio/mpeg"); } } response = await client.ExecuteTaskAsync(request).ConfigureAwait(false); } catch (Exception ex) { } } } if (response != null && response.IsSuccessful) { var strResponse = response?.Content; dynamic responseData = string.IsNullOrEmpty(strResponse) ? "" : JsonConvert.DeserializeObject(strResponse); if (responseData != null) { result.SystemGeneratedId = responseData.uuid; result.IsSuccess = true; } } return(result); }