示例#1
0
        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);
            }
        }
示例#2
0
        public async Task <IActionResult> GetAllReviewTasks(string Token)
        {
            User currentUser = _context.Users.FirstOrDefault(u => u.Email.Equals(Token));
            List <UserReview>             reviewData = _context.UserReview.Where(u => u.UserId.Equals(currentUser.Id)).ToList();
            List <WorkApplicationDataDto> data       = new List <WorkApplicationDataDto>();

            foreach (var review in reviewData)
            {
                WorkApplicationData result = _context.workApplicationData.FirstOrDefault(data => data.Id.Equals(review.WorkApplicationDataId));
                if (result != null)
                {
                    data.Add(new WorkApplicationDataDto()
                    {
                        processDefinitionId = result.processDefinitionId, processInstanceId = result.processInstanceId, Id = result.Id
                    });
                }
            }

            return(Ok(JsonConvert.SerializeObject(data)));
        }
示例#3
0
        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());
        }
示例#4
0
        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());
        }