Пример #1
0
        public async Task <UserDataDto> CreateUserAsync(NewUserDataDto user)
        {
            try
            {
                var id = await _db.Query("users")
                         .InsertGetIdAsync <int>(new
                {
                    username  = user.Username,
                    password  = user.Password,
                    api_token = user.ApiToken
                });

                return(new UserDataDto
                {
                    Id = id,
                    Username = user.Username,
                    Password = user.Password,
                    ApiToken = user.ApiToken,
                });
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #2
0
        public async Task <IUser> CreateUserAsync(string username, string password)
        {
            var newUserData = new NewUserDataDto
            {
                Username = username,
                Password = password,
                ApiToken = Security.RandomCryptographicString(255)
            };
            var userData = await _userRepository.CreateUserAsync(newUserData);

            return(userData != null?_dependencyMapper.Construct <User>(userData) : null);
        }
Пример #3
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());
        }