public async Task <IActionResult> CompleteFileUploadTask([FromBody] NewUserDataDto dto) { if (dto == null) { return(BadRequest()); } NewUserData newUserData = _context.NewUserData.FirstOrDefault(nud => nud.Hash.Equals(dto.Hash)); EntityFramework.Model.User user = _context.Users.FirstOrDefault(u => u.Email.Equals(newUserData.NewUserEmmail)); if (!user.UserVerified) { return(BadRequest()); } if (dto.SimulateFail == true) { user.UserRetryCount += 1; _context.Users.Update(user); _context.SaveChanges(); return(Ok()); } HttpResponseMessage taskResponse = await client.GetAsync($"{_configuration["url"]}/task?processDefinitionId={dto.ProcessDefinitionId}&&processInstanceId={dto.ProcessInstanceId}"); Task <string> jsonStringResult = taskResponse.Content.ReadAsStringAsync(); List <CamundaTask> tasks = JsonConvert.DeserializeObject <List <CamundaTask> >(jsonStringResult.Result); if (tasks.Count == 0) { return(BadRequest()); } //complete task var content = new StringContent("{}", Encoding.UTF8, "application/json"); HttpResponseMessage commpleteTask = await client.PostAsync($"{_configuration["url"]}/task/{tasks[0].id}/complete", content); user.UserRetryCount += 1; _context.Update(user); _context.SaveChanges(); try { WorkApplicationData data = new WorkApplicationData() { BoardMembeNeedsMoreData = false, BoardMembersApprove = 0, BoardMembers = new List <UserReview>(), processDefinitionId = dto.ProcessDefinitionId, processInstanceId = dto.ProcessInstanceId, WriterEmail = user.Email, Comments = "Board member had this to say for your work: \n" }; _context.workApplicationData.Add(data); _context.SaveChanges(); WorkApplicationData currentData = _context.workApplicationData.FirstOrDefault(d => d.Id.Equals(data.Id)); List <User> reviewers = _context.Users.Where(u => u.Email.Contains("clanodbora")).ToList(); currentData.BoardMembersInitialCount = reviewers.Count(); foreach (var reviewer in reviewers) { currentData.BoardMembers.Add(new UserReview() { UserId = reviewer.Id, WorkApplicationDataId = currentData.Id }); } _context.workApplicationData.Update(currentData); _context.SaveChanges(); //logujem ga FetchAndLock fetchAndLock = new FetchAndLock() { workerId = user.Email, maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "ProveraKojiPutPisacPodnosiRadove" } } }; var fetchAndLockContent = new StringContent(JsonConvert.SerializeObject(fetchAndLock), Encoding.UTF8, "application/json"); HttpResponseMessage lockExternalTask = await client.PostAsync($"{_configuration["url"]}/external-task/fetchAndLock", fetchAndLockContent); //daj mi moj lokovan da izvucem id HttpResponseMessage externalTaskInfo = await client.GetAsync($"{_configuration["url"]}/external-task?workerId={user.Email}"); Task <string> jsonStringResult_1 = externalTaskInfo.Content.ReadAsStringAsync(); List <CamundaExternalTask> externalTasks = JsonConvert.DeserializeObject <List <CamundaExternalTask> >(jsonStringResult_1.Result); CamundaExternalTask currenTask = externalTasks.First(); //prosledimm rezultat ClanOdbora clan = new ClanOdbora() { value = user.Email }; ClanoviOdbora clanovi = new ClanoviOdbora() { value = reviewers.ConvertAll <string>(u => u.FirstName) }; NumberOfTrials brojPojusaja = new NumberOfTrials() { value = user.UserRetryCount }; Camunda.Model.ProcessModel.VariablesSecondTask test = new VariablesSecondTask() { ClanOdbora = clan, ClanoviOdbora = clanovi, NumberOfTrials = brojPojusaja }; CompleteExternalTask completeExternalTask = new CompleteExternalTask() { workerId = user.Email, variables = test }; var completeExternalTaskContent = new StringContent(JsonConvert.SerializeObject(completeExternalTask), Encoding.UTF8, "application/json"); HttpResponseMessage commpleteExternalTask = await client.PostAsync($"{_configuration["url"]}/external-task/{currenTask.id}/complete", completeExternalTaskContent); } catch (Exception e) { return(BadRequest()); } if (user.UserRetryCount > 3) { try { EmailService.SendEmail(new UserDto() { Email = user.Email }, _context, "NumberOfUploads"); //logujem ga FetchAndLock fetchAndLockFail = new FetchAndLock() { workerId = user.Email, maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "NotificiranjeONeuspehu" } } }; var fetchAndLockContentFail = new StringContent(JsonConvert.SerializeObject(fetchAndLockFail), Encoding.UTF8, "application/json"); HttpResponseMessage lockExternalTaskFail = await client.PostAsync($"{_configuration["url"]}/external-task/fetchAndLock", fetchAndLockContentFail); //daj mi moj lokovan da izvucem id HttpResponseMessage externalTaskInfoFail = await client.GetAsync($"{_configuration["url"]}/external-task?workerId={user.Email}"); Task <string> jsonStringResult_1Fail = externalTaskInfoFail.Content.ReadAsStringAsync(); List <CamundaExternalTask> externalTasksFail = JsonConvert.DeserializeObject <List <CamundaExternalTask> >(jsonStringResult_1Fail.Result); CamundaExternalTask currenTaskFail = externalTasksFail.First(); //prosledimm reziltat CompleteExternalTask completeExternalTaskFail = new CompleteExternalTask() { workerId = user.Email, variables = null }; var completeExternalTaskContentFail = new StringContent(JsonConvert.SerializeObject(completeExternalTaskFail), Encoding.UTF8, "application/json"); HttpResponseMessage commpleteExternalTaskFail = await client.PostAsync($"{_configuration["url"]}/external-task/{currenTaskFail.id}/complete", completeExternalTaskContentFail); } catch (Exception e) { return(BadRequest()); } } return(Ok()); }
public async Task <IActionResult> Activate(string hash) { if (hash == null) { return(BadRequest()); } try { NewUserData data = _context.NewUserData.FirstOrDefault(ud => ud.Hash.Equals(hash)); User currentUser = _context.Users.FirstOrDefault(u => u.Email.Equals(data.NewUserEmmail)); currentUser.UserVerified = true; _context.Update(currentUser); _context.SaveChanges(); if (data.Writer) { ControlFlow.ResumeOnError(() => { EmailService.SendEmail(new UserDto() { FirstName = data.Hash, Writer = data.Writer, Email = data.NewUserEmmail }, null, "WorkUpload"); }); } HttpResponseMessage taskResponse = await client.GetAsync($"{_configuration["url"]}/task?processDefinitionId={data.processDefinitionId}&&processInstanceId={data.processInstanceId}"); Task <string> jsonStringResult = taskResponse.Content.ReadAsStringAsync(); List <CamundaTask> tasks = JsonConvert.DeserializeObject <List <CamundaTask> >(jsonStringResult.Result); if (tasks.Count == 0) { return(BadRequest()); } var content = new StringContent("{}", Encoding.UTF8, "application/json"); HttpResponseMessage commpleteTask = await client.PostAsync($"{_configuration["url"]}/task/{tasks[0].id}/complete", content); //logujem ga FetchAndLock fetchAndLock = new FetchAndLock() { workerId = currentUser.Email, maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "ProveraKorisnikovePotvrde" } } }; var fetchAndLockContent = new StringContent(JsonConvert.SerializeObject(fetchAndLock), Encoding.UTF8, "application/json"); HttpResponseMessage lockExternalTask = await client.PostAsync($"{_configuration["url"]}/external-task/fetchAndLock", fetchAndLockContent); //daj mi moj lokovan da izvucem id HttpResponseMessage externalTaskInfo = await client.GetAsync($"{_configuration["url"]}/external-task?workerId={currentUser.Email}"); Task <string> jsonStringResult_1 = externalTaskInfo.Content.ReadAsStringAsync(); List <CamundaExternalTask> externalTasks = JsonConvert.DeserializeObject <List <CamundaExternalTask> >(jsonStringResult_1.Result); CamundaExternalTask currenTask = externalTasks.First(); //prosledimm reziltat CompleteExternalTask completeExternalTask = new CompleteExternalTask() { workerId = currentUser.Email, variables = new VariablesFirstTask() { Writer = new Writer() { value = data.Writer } } }; var completeExternalTaskContent = new StringContent(JsonConvert.SerializeObject(completeExternalTask), Encoding.UTF8, "application/json"); HttpResponseMessage commpleteExternalTask = await client.PostAsync($"{_configuration["url"]}/external-task/{currenTask.id}/complete", completeExternalTaskContent); return(Ok()); } catch { return(BadRequest()); } }