Ejemplo n.º 1
0
        //Создание задачи с файлом для Redmine (в сообщении задачи метаданные логов по документа в формате json)
        public static MetadataOfLog CreateIssueWithAFile(string subject, DocumentReceiveLog log, bool hasPriority)
        {
            RedmineFile fileOnRedmine = null;
            var         fi            = new FileInfo(log.GetFileName());

            if (!hasPriority && fi.Extension.ToLower() != ".dbf")
            {
                return(null);
            }

            var redmineProject = hasPriority
                            ? Settings.Default.RedmineProjectForWaybillIssueWithPriority
                                        : Settings.Default.RedmineProjectForWaybillIssue;
            var redmineUser = !hasPriority || fi.Extension.ToLower() == ".dbf"
                            ? Settings.Default.RedmineAssignedTo
                            : Settings.Default.RedmineAssignedToWithPriority;

            var bufferF     = File.ReadAllBytes(fi.FullName);
            var currentMeta = new MetadataOfLog(log);

#if DEBUG
            //для тестов
            if (!FileAlreadyInIssue(redmineProject, currentMeta.Hash))
            {
                var debugHash = log.FileName.GetHashCode().ToString().Replace("-", "");
                var token     = debugHash;
#else
            if (!FileAlreadyInIssue(redmineProject, currentMeta.Hash))
            {
                var token =
                    UploadFileToRedmine(
                        string.Format(Settings.Default.RedmineUrlFileUpload, Settings.Default.RedmineKeyForWaybillIssue),
                        bufferF);
#endif
                if (token != string.Empty)
                {
                    fileOnRedmine = new RedmineFile {
                        Token        = token,
                        Content_type = "application/binary",
                        Filename     = fi.Name,
                        Json         =
                            $"Служебная информация по {(log.DocumentType == DocType.Waybill ? "накладной" : "отказу")}: {currentMeta.Hash}"
                    };
                    //возвращаем метаданные только, если задача создана
                    return
                        (CreateIssue(
                             string.Format(Settings.Default.RedmineUrl, redmineProject,
                                           Settings.Default.RedmineKeyForWaybillIssue), subject, fileOnRedmine.Json, redmineUser
                             , new List <RedmineFile> {
                        fileOnRedmine
                    })
                                                    ? currentMeta
                                                    : null);
                }
            }
            return(null);
        }
Ejemplo n.º 2
0
        //проверка существующей задачи на Redmine
        private static bool FileAlreadyInIssue(string project, string hash)
        {
            var result = MetadataOfLog.GetMetaFromDataBase(project, hash);

            if (result.HasValue)
            {
                _InfoLog.Info(
                    $"По неразобранной накладной уже была создана задача {result.Value}");
                return(true);
            }
            return(false);
        }