public UnitOfWork(IdentityDataContext db)
 {
     _db                = db;
     User               = new UserRepository(_db);
     InitiativeYear     = new InitiativeYearRepository(_db);
     Initiative         = new InitiativeRepository(_db);
     InitiativeMember   = new InitiativeMemberRepository(_db);
     ActionItem         = new ActionItemRepository(_db);
     ItemAssignee       = new ItemAssigneeRepository(_db);
     ReviewCycle        = new ReviewCycleRepository(_db);
     CommentItem        = new CommentItemRepository(_db);
     EvaluationCriteria = new EvaluationCriteriaRepository(_db);
     InitiativeMeeting  = new InitiativeMeetingRepository(_db);
 }
Exemple #2
0
 public InitiativeController()
 {
     this.repo = InitiativeRepository.GetInstance();
 }
Exemple #3
0
        public static async Task <(bool, string, Message)> FindReferenceDataByQuestion(Message source, long serviceId, User user,
                                                                                       UsersRepository users, MessageParams messageParams, DBPIParams dbPIParams)
        {
            // TODO must be 1
            var startTime = DateTime.Now;
            var question  = source.Body;

            var lastMessageID = users.GetLastMessageID(user.GUID);

            var(success, error, apsolutionsAnswer) = await SearchText(user.GUID, user.Fio, user.Position, user.EmploymentDate, serviceId, question).ConfigureAwait(false);

            if (users.IsOlderThenLast(user.GUID, lastMessageID))
            {
                return(false, error, null);
            }
            // TODO if(service != null && apsolutionsAnswer.QuestionCategory == "information")

            if (!success || apsolutionsAnswer is null || apsolutionsAnswer.Records is null || apsolutionsAnswer.Records.Length == 0)
            {
                users.SetLastMessageID(user.GUID);
                return(false, null, Message.Answer(source, success ? messageParams.NotFound : messageParams.AIError, DateTime.Now.Ticks - startTime.Ticks));
            }

            var userMessages = new Queue <Message>();

            foreach (var record in apsolutionsAnswer.Records)
            {
                var    body = record.Text;
                string description = null, title = null;
                ulong  iid = 0;
                if (ulong.TryParse(body, out var pid))
                {
                    var initiativeRepository = new InitiativeRepository(new ConnectionService(dbPIParams));
                    var(notFound, _, info) = await initiativeRepository.GetAsync(pid).ConfigureAwait(false);

                    if (notFound)
                    {
                        title       = info.Problem.Length < 65 ? info.Problem : $"{info.Problem.Substring(0, 62)}...";
                        body        = $"<div class=\"gpn-source\">Портал инициатив &#62; {info.Iid}</div><div class=\"gpn-title\">{title}</div><div class=\"gpn-shortDescription\">{info.Organization} {info.Status}</div>";
                        description =
                            $"<div class=\"gpn-key\">Инициатива:</div><div class=\"gpn-value\">{info.Iid}</div>" +
                            $"<div class=\"gpn-key\">Создана:</div><div class=\"gpn-value\">{info.Created:dd.MM.yyyy}</div>" +
                            $"<div class=\"gpn-key\">Автор:</div><div class=\"gpn-value\">{info.Author}</div>" +
                            $"<div class=\"gpn-key\">Организация/подразделение:</div><div class=\"gpn-value\">{info.Organization}</div>" +
                            $"<div class=\"gpn-key\">Проблема:</div><div class=\"gpn-value\">{info.Problem}</div>" +
                            $"<div class=\"gpn-key\">Решение:</div><div class=\"gpn-value\">{info.Solution}</div>" +
                            $"<div class=\"gpn-key\">Статус:</div><div class=\"gpn-value\">{info.Status}</div>" +
                            $"<div class=\"gpn-key\">Количество комментариев:</div><div class=\"gpn-value\">{info.CommentsCount}</div>" +
                            $"<div class=\"gpn-key\">Дата последнего комментария:</div><div class=\"gpn-value\">{info.LastCommentDate ?? "-"}</div>" +
                            $"<div class=\"gpn-key\">Комментарий:</div><div class=\"gpn-value\">{info.LastCommentText ?? "-"}</div>";
                        iid = pid;
                    }
                }

                var answer = Message.Answer(source, body);
                answer.Description = description;
                answer.Title       = title;
                answer.Iid         = iid;
                answer.CanClick    = true;
                answer.Created     = startTime;

                userMessages.Enqueue(answer);
            }

            users.SetMessages(user.GUID, QueueType.information, userMessages);
            users.SetLastMessageID(user.GUID);
            return(true, null, null);
        }