コード例 #1
0
        public FilesRepository(IConfiguration configuration,
                               ICrmWebResourceRepository webResourceRepository, IServiceProvider serviceProvider, WebResourceContext webResourceContext)
        {
            Configuration         = configuration;
            WebResourceRepository = webResourceRepository;
            ServiceProvider       = serviceProvider;
            WebResourceContext    = webResourceContext;

            ScriptsPath = Configuration.GetSection("AppSettings")["WebPackFolder"];
            if (string.IsNullOrEmpty(ScriptsPath))
            {
                throw new ArgumentException("Не задан путь до директории  со скриптами.");
            }
        }
コード例 #2
0
 public BuildRepository(IServiceProvider serviceProvider, WebResourceContext context)
 {
     ServiceProvider = serviceProvider;
     Context         = context;
 }
コード例 #3
0
        /// <summary>
        /// Автоматически сопоставить файлы и записать их в БД
        /// </summary>
        public void AutoMapFiles(Build build, bool isStartMapping = false)
        {
            var buildDirectory = Path.Combine(ScriptsPath, Configuration.GetSection("AppSettings")["BuildDirectory"]);

            if (!Directory.Exists(buildDirectory))
            {
                throw new DirectoryNotFoundException("Не найдена директория со скриптами!.");
            }

            var fileNames = Directory.GetFiles(buildDirectory, "*.js", SearchOption.AllDirectories);

            var savedWebResources = WebResourceContext.WebResourceMaps.Select(x => x).ToList();

            foreach (var fileName in fileNames)
            {
                var webResourceHash = CryptographyHelper.GetMd5Hash(fileName);

                var index       = fileName.IndexOf("new_", StringComparison.Ordinal);
                var crmFileName = fileName.Substring(index, fileName.Length - index).Replace("\\", "/")
                                  .Replace(".bundle", "");

                var savedWebResource = savedWebResources.FirstOrDefault(x => x.CrmFileName == crmFileName);

                if (savedWebResource?.LocalFileMd5Hash == webResourceHash)
                {
                    continue;
                }

                savedWebResource = savedWebResource ?? new WebResourceMap();
                savedWebResource.IsAutoUpdate     = crmFileName.Contains("/ribbon") || crmFileName.Contains("/form");
                savedWebResource.CrmFileName      = crmFileName;
                savedWebResource.CreatedOn        = DateTime.Now;
                savedWebResource.LocalFileMd5Hash = webResourceHash;
                savedWebResource.FileSystemPath   = fileName;

                var crmWebResource = WebResourceRepository.RetrieveWebresource(crmFileName);
                if (crmWebResource != null)
                {
                    savedWebResource.CrmWebResourceId = crmWebResource.Id;
                }

                if (savedWebResource.Id == Guid.Empty)
                {
                    WebResourceContext.WebResourceMaps.Add(savedWebResource);
                }
                else
                {
                    WebResourceContext.Entry(savedWebResource).State = EntityState.Modified;
                }

                if (!isStartMapping)
                {
                    WebResourceContext.ChangedWebResources.Add(new ChangedWebResource
                    {
                        Build          = build,
                        WebResourceMap = savedWebResource,
                        ChangedDate    = DateTime.Now
                    });
                }
            }

            WebResourceContext.SaveChanges();
        }