private async static void UploadTimeOutCheck(WorkApplicationData data, LitUdrContext context, IConfiguration _configuration) { //provera da li je pisac uplatio clanarinu HttpResponseMessage taskResponseCheck = await client.GetAsync($"{_configuration["url"]}/external-task?processDefinitionId={data.processDefinitionId}&&processInstanceId={data.processInstanceId}"); Task <string> jsonStringResultCheck = taskResponseCheck.Content.ReadAsStringAsync(); List <CamundaTask> tasksCheck = JsonConvert.DeserializeObject <List <CamundaTask> >(jsonStringResultCheck.Result); if (tasksCheck.Count > 0) { ControlFlow.ResumeOnError(() => { EmailService.SendEmail(new UserDto() { Email = data.WriterEmail }, context, "LateUpload"); }); //logujem ga FetchAndLock fetchAndLockFail = new FetchAndLock() { workerId = data.WriterEmail, maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "NotificiranjeONePostovanjuRoka" } } }; 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={data.WriterEmail}"); 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 = data.WriterEmail, 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); } }
public async Task <IActionResult> PostReviewData([FromBody] ReviewDto dto) { if (dto == null) { return(BadRequest()); } User boardMember = _context.Users.FirstOrDefault(u => u.Email.Equals(dto.Token)); WorkApplicationData data = _context.workApplicationData.FirstOrDefault(wad => wad.Id.Equals(dto.Id)); List <UserReview> allReviews = _context.UserReview.Where(ur => ur.WorkApplicationDataId.Equals(dto.Id)).ToList(); UserReview currentReview = allReviews.Find(u => u.WorkApplicationDataId.Equals(data.Id) && u.UserId.Equals(boardMember.Id)); data.Comments += $"\n {boardMember.Email}: {dto.Comment} \n"; switch (dto.Result) { case "approve": _context.UserReview.Remove(currentReview); data.BoardMembersApprove += 1; _context.workApplicationData.Update(data); _context.SaveChanges(); break; case "decline": _context.UserReview.Remove(currentReview); _context.SaveChanges(); break; case "needMoreData": _context.UserReview.Remove(currentReview); data.BoardMembeNeedsMoreData = true; _context.workApplicationData.Update(data); _context.SaveChanges(); break; } //TODO u workaplication data sacuvati komentare u novom polu i posle ih proslediti kroz mail List <UserReview> currentAllReviews = _context.UserReview.Where(ur => ur.WorkApplicationDataId.Equals(dto.Id)).ToList(); if (currentAllReviews.Count > 0) { 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); } else { 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()); } StringContent content; if (data.BoardMembeNeedsMoreData) { content = new StringContent(JsonConvert.SerializeObject(new CompleteUserTaskWithVariable() { variables = new WriterFailedAbstract() { WriterFailed = new object() } }), Encoding.UTF8, "application/json"); HttpResponseMessage commpleteTask = await client.PostAsync($"{_configuration["url"]}/task/{tasks[0].id}/complete", content); try { string guid = Guid.NewGuid().ToString(); ControlFlow.ResumeOnError(() => { EmailService.SendEmail(new UserDto() { Email = data.WriterEmail, Password = guid, FirstName = data.Comments }, _context, "NeedMoreWork"); }); NewUserData newUserData = new NewUserData() { Hash = guid, NewUserEmmail = data.WriterEmail, processDefinitionId = data.processDefinitionId, processInstanceId = data.processInstanceId }; _context.NewUserData.Add(newUserData); _context.SaveChanges(); //TODO sacuvati u bazu i obrnuti krug //logujem ga FetchAndLock fetchAndLockFail = new FetchAndLock() { workerId = data.WriterEmail, maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "NotificiranjeIDavanjeRoka" } } }; 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={data.WriterEmail}"); 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 = data.WriterEmail, 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); const int scheduledPeriodMilliseconds = 70000; var allTasksWaitHandle = new AutoResetEvent(true); ThreadPool.RegisterWaitForSingleObject( allTasksWaitHandle, (s, b) => { UploadTimeOutCheck(data, _context, _configuration); }, null, scheduledPeriodMilliseconds, false); } catch (Exception e) { return(BadRequest()); } } else if (data.BoardMembersApprove == data.BoardMembersInitialCount) { content = new StringContent(JsonConvert.SerializeObject(new CompleteUserTaskWithVariable() { variables = new WriterFailedAbstract() { WriterFailed = new WriterFailed() { value = false } } }), Encoding.UTF8, "application/json"); HttpResponseMessage commpleteTask = await client.PostAsync($"{_configuration["url"]}/task/{tasks[0].id}/complete", content); try { string guid = Guid.NewGuid().ToString(); ControlFlow.ResumeOnError(() => { EmailService.SendEmail(new UserDto() { Email = data.WriterEmail, Password = guid, FirstName = data.Comments }, _context, "Approved"); }); NewUserData newUserData = new NewUserData() { Hash = guid, processDefinitionId = data.processDefinitionId, processInstanceId = data.processInstanceId }; _context.NewUserData.Add(newUserData); _context.SaveChanges(); //logujem ga FetchAndLock fetchAndLockFail = new FetchAndLock() { workerId = data.WriterEmail, maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "NotificiranjeOUspehu" } } }; 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={data.WriterEmail}"); 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 = data.WriterEmail, 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); const int scheduledPeriodMilliseconds = 70000; var allTasksWaitHandle = new AutoResetEvent(true); ThreadPool.RegisterWaitForSingleObject( allTasksWaitHandle, (s, b) => { TimeOutCheck(data, _context, _configuration); }, null, scheduledPeriodMilliseconds, false); } catch (Exception e) { return(BadRequest()); } } else if (data.BoardMembersApprove < (data.BoardMembersInitialCount - data.BoardMembersApprove)) { content = new StringContent(JsonConvert.SerializeObject(new CompleteUserTaskWithVariable() { variables = new WriterFailedAbstract() { WriterFailed = new WriterFailed() { value = true } } }), Encoding.UTF8, "application/json"); HttpResponseMessage commpleteTask = await client.PostAsync($"{_configuration["url"]}/task/{tasks[0].id}/complete", content); try { ControlFlow.ResumeOnError(() => { EmailService.SendEmail(new UserDto() { Email = data.WriterEmail, FirstName = data.Comments }, _context, "Declined"); }); //logujem ga FetchAndLock fetchAndLockFail = new FetchAndLock() { workerId = data.WriterEmail, maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "NotificiranjeOOdbijanju" } } }; 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={data.WriterEmail}"); 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 = data.WriterEmail, 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); const int scheduledPeriodMilliseconds = 70000; var allTasksWaitHandle = new AutoResetEvent(true); ThreadPool.RegisterWaitForSingleObject( allTasksWaitHandle, (s, b) => { UploadTimeOutCheck(data, _context, _configuration); }, null, scheduledPeriodMilliseconds, false); } catch (Exception e) { return(BadRequest()); } } else { content = new StringContent(JsonConvert.SerializeObject(new CompleteUserTaskWithVariable() { variables = new WriterFailedAbstract() { WriterFailed = new object() } }), Encoding.UTF8, "application/json"); HttpResponseMessage commpleteTask = await client.PostAsync($"{_configuration["url"]}/task/{tasks[0].id}/complete", content); try { string guid = Guid.NewGuid().ToString(); ControlFlow.ResumeOnError(() => { EmailService.SendEmail(new UserDto() { Email = data.WriterEmail, Password = guid, FirstName = data.Comments }, _context, "NeedMoreWork"); }); NewUserData newUserData = new NewUserData() { Hash = guid, NewUserEmmail = data.WriterEmail, processDefinitionId = data.processDefinitionId, processInstanceId = data.processInstanceId }; _context.NewUserData.Add(newUserData); _context.SaveChanges(); //logujem ga FetchAndLock fetchAndLockFail = new FetchAndLock() { workerId = data.WriterEmail, maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "NotificiranjeIDavanjeRoka" } } }; 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={data.WriterEmail}"); 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 = data.WriterEmail, 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()); } }
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> RegisterNewUser([FromBody] UserDto dto) { int userId = -1; try { var content = new StringContent("{}", Encoding.UTF8, "application/json"); HttpResponseMessage commpleteTask = await client.PostAsync($"{_configuration["url"]}/task/{dto.TaskId}/complete", content); lit_udr.EntityFramework.Model.User newUser = new lit_udr.EntityFramework.Model.User() { FirstName = dto.FirstName, LastName = dto.LastName, Password = CreatePasswordHash(dto.Password), Email = dto.Email.ToLower(), Country = dto.Country, City = dto.City, Writer = dto.Writer, BetaReader = dto.BetaReader, UserVerified = false, UserRetryCount = 0, UserGenres = new List <UserGenre>() }; dto.Genre = dto.Genre.Distinct().ToList(); foreach (string genre in dto.Genre) { lit_udr.EntityFramework.Model.Genre genreInDatabase = _context.Genres.FirstOrDefault(x => x.Name.Equals(genre)); newUser.UserGenres.Add(new UserGenre() { UserId = newUser.Id, GenreId = genreInDatabase.Id }); } _context.Users.Add(newUser); _context.SaveChanges(); userId = newUser.Id; ControlFlow.ResumeOnError(() => { EmailService.SendEmail(dto, _context, "Registration"); }); //logujem ga FetchAndLock fetchAndLock = new FetchAndLock() { workerId = newUser.Email, maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "ProveraRegistracije" } } }; 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={newUser.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 = newUser.Email, variables = new Camunda.Model.ProcessModel.Variables() { DataCorrect = new DataCorrect() { value = true } } }; 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 (Exception e) { User currentUser = _context.Users.FirstOrDefault(u => u.Id.Equals(userId)); if (currentUser != null) { _context.Users.Remove(currentUser); _context.SaveChanges(); } var content = new StringContent("{}", Encoding.UTF8, "application/json"); HttpResponseMessage commpleteTask = await client.PostAsync($"{_configuration["url"]}/task/{dto.TaskId}/complete", content); //logujem ga FetchAndLock fetchAndLock = new FetchAndLock() { workerId = "BadRequest", maxTasks = 10, topics = new List <Topic>() { new Topic() { lockDuration = 10000, topicName = "ProveraRegistracije" } } }; 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=BadRequest"); 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 = "BadRequest", variables = new Camunda.Model.ProcessModel.Variables() { DataCorrect = new DataCorrect() { value = false } } }; 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(BadRequest()); } }