コード例 #1
0
ファイル: Images.cs プロジェクト: Aranjedeath/SpecimenCode
        public Byte[] GetImageInBytes(string folder, int page,out int pageCount)
        {
            pageCount = 0;
            var applicationKeyService = new ApplicationKeyService();
            var dbApplicationKeyModel = applicationKeyService.GetAllApplicationKey().FirstOrDefault(x => x.Key == new Guid(folder));
            if (dbApplicationKeyModel.LastUpdatedDate.Date == DateTime.Now.Date &&
                dbApplicationKeyModel.LastUpdatedDate.TimeOfDay.Add(new TimeSpan(0, 0, ApplicationConfiguration.DocumentExpirationMinute.Value, 0)) >= DateTime.Now.TimeOfDay)
            {
                var localPath = Common.Configuration.ApplicationConfiguration.DocStorePath + 
                                ApplicationConfiguration.RemoveDirectoryNFileFromServer + Path.DirectorySeparatorChar + 
                                dbApplicationKeyModel.Key + Path.DirectorySeparatorChar + "Water_" + dbApplicationKeyModel.Key + page + ApplicationConfiguration.ImageExtension;
                var fileInfo = new FileInfo(localPath);
                var data = new Byte[] { };
                if (File.Exists(localPath))
                {
                    data = new byte[fileInfo.Length];
                    using (var fs = fileInfo.OpenRead())
                    {
                        fs.Read(data, 0, data.Length);
                    }

                    pageCount = dbApplicationKeyModel.PageCount;

                    //code added for proactive page creation
                    dbApplicationKeyModel.IsDeleted = false;
                    dbApplicationKeyModel.LastUpdatedDate = DateTime.Now;
                    dbApplicationKeyModel.LastUpdatedBy = dbApplicationKeyModel.UserName;
                    dbApplicationKeyModel.StatusId = 1;
                    dbApplicationKeyModel.CurrentPage = page + 1;
                    applicationKeyService.UpdateApplicationKey(dbApplicationKeyModel);

                }
                else
                {
                    dbApplicationKeyModel.IsDeleted = false;
                    dbApplicationKeyModel.CurrentPage = page;
                    dbApplicationKeyModel.LastUpdatedDate = DateTime.Now;
                    dbApplicationKeyModel.LastUpdatedBy = dbApplicationKeyModel.UserName;
                    dbApplicationKeyModel.StatusId = 1;
                    applicationKeyService.UpdateApplicationKeyCurrentPage(dbApplicationKeyModel);

                    pageCount = dbApplicationKeyModel.PageCount;

                    var status = applicationKeyService.GetProcessorStatus(dbApplicationKeyModel);

                    //This might get stuck in an infinite loop 
                    //need a logic to get over
                    while (applicationKeyService.GetProcessorStatus(dbApplicationKeyModel) != (int)ProcessorStatus.Completed)
                        status = applicationKeyService.GetProcessorStatus(dbApplicationKeyModel);
                    
                    data = new byte[fileInfo.Length];
                    using (var fs = fileInfo.OpenRead())
                    {
                        fs.Read(data, 0, data.Length);
                    }

                    //code added for proactive page creation
                    dbApplicationKeyModel.IsDeleted = false;
                    dbApplicationKeyModel.CurrentPage = page + 1;
                    dbApplicationKeyModel.LastUpdatedDate = DateTime.Now;
                    dbApplicationKeyModel.LastUpdatedBy = dbApplicationKeyModel.UserName;
                    dbApplicationKeyModel.StatusId = 1;
                    applicationKeyService.UpdateApplicationKeyCurrentPage(dbApplicationKeyModel);

                }

                var outpath = Common.Configuration.ApplicationConfiguration.DocStorePath + ApplicationConfiguration.RemoveDirectoryNFileFromServer + Path.DirectorySeparatorChar + dbApplicationKeyModel.Key + Path.DirectorySeparatorChar + "ecs_" + dbApplicationKeyModel.Key + page + ApplicationConfiguration.ImageExtension;

                File.WriteAllBytes(outpath, data);

                var stream = new MemoryStream(data);

                return stream.ToArray();

            }

            if (Directory.Exists(dbApplicationKeyModel.DocumentPath))
                Directory.Delete(dbApplicationKeyModel.DocumentPath, true);

            dbApplicationKeyModel.IsDeleted = true;
            dbApplicationKeyModel.LastUpdatedDate = DateTime.Now;
            dbApplicationKeyModel.LastUpdatedBy = dbApplicationKeyModel.UserName;
            applicationKeyService.UpdateApplicationKey(dbApplicationKeyModel);

            pageCount = dbApplicationKeyModel.PageCount;

            return new byte[12];
        }