示例#1
0
        public FilePathResult GetSavedChecksDownload(string site, string fileName)
        {
            site     = Encoder.HtmlEncode(site);
            fileName = Encoder.HtmlEncode(fileName);
            if (!fileName.EndsWith(".xlsm"))
            {
                _nlogger.LogError("GetSavedChecksDownload - invalid file: " + fileName);
                return(null);
            }
            var dto = DbUtils.GetSiteCodeForSiteId(int.Parse(site));

            if (!dto.IsSuccessful)
            {
                _nlogger.LogError("GetSavedChecksDownload failed: " + fileName);
                return(null);
            }

            var folderPath = ConfigurationManager.AppSettings["ChecksUploadPath"].ToString();
            var path       = Path.Combine(folderPath, dto.Bag.ToString());

            var fullpath = Path.Combine(path, fileName);


            _nlogger.LogInfo("GetSavedChecksDownload: " + fileName);
            return(this.File(fullpath, "application/vnd.ms-excel.sheet.macroEnabled.12", fileName.Replace("copy", "")));
        }
        /// <summary>
        /// 添加任务调度(指定IJob实现类)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="QuartzOptions"></param>
        /// <returns></returns>
        public static async Task <QuartzResult> AddJob <T>(this ISchedulerFactory schedulerFactory, QuartzOption QuartzOptions) where T : IJob
        {
            if (QuartzOptions is null)
            {
                throw new ArgumentNullException(nameof(QuartzOptions));
            }
            if (scheduler == null)
            {
                scheduler = schedulerFactory?.GetScheduler().Result;
            }
            try
            {
                //检查任务是否已存在
                if (await scheduler.CheckExists(new JobKey(QuartzOptions.TaskName, QuartzOptions.GroupName)))
                {
                    return(QuartzResult.Error($"任务 {QuartzOptions.TaskName},任务组 {QuartzOptions.GroupName} 已存在"));
                }
                // 定义这个工作,并将其绑定到我们的IJob实现类
                IJobDetail jobDetail = CreateJobDetail <T>(QuartzOptions);//JobBuilder.CreateForAsync<T>().WithIdentity(Option.TaskName, Option.GroupName).Build();
                // 创建触发器
                ITrigger trigger;
                if (QuartzOptions.IntervalType == IntervalType.Cron)
                {
                    if (!CronExpression.IsValidExpression(QuartzOptions.Interval))
                    {
                        return(QuartzResult.Error($"请确认表达式{QuartzOptions.Interval}是否正确!"));
                    }
                    trigger = QuartzOptions.CreateCronTrigger();
                }
                else
                {
                    trigger = CreateSimpleTrigger(QuartzOptions);
                }
                // 设置监听器
                //JobListener listener = new JobListener();
                //// IMatcher<JobKey> matcher = KeyMatcher<JobKey>.KeyEquals(job.Key);
                //scheduler.ListenerManager.AddJobListener(listener, GroupMatcher<JobKey>.AnyGroup());

                await scheduler.ScheduleJob(jobDetail, trigger);

                if (QuartzOptions.TaskStatus == TriggerState.Normal)
                {
                    await scheduler.Start();
                }
                else
                {
                    await schedulerFactory.Pause(QuartzOptions);
                }
                logger.LogDebug($"作业:{QuartzOptions.TaskName},目标:{QuartzOptions.TaskTarget},分组:{QuartzOptions.GroupName},状态为:{QuartzOptions.TaskStatus}");
                return(QuartzResult.Ok("添加成功"));
            }
            catch (Exception ex)
            {
                logger.LogError($"添加任务出错--{ex.StackTrace}");
                return(QuartzResult.Error($"添加任务出错--{ex.StackTrace}"));
            }
        }
示例#3
0
        public static bool AddSenorData(string studyId, SSInsertionData ssInsert)
        {
            //A lookup is used in the strored procedure to store the study id (int) in the database
            var strConn = ConfigurationManager.ConnectionStrings["Halfpint"].ToString();

            using (var conn = new SqlConnection(strConn))
            {
                try
                {
                    var cmd = new SqlCommand("", conn)
                    {
                        CommandType = System.Data.CommandType.StoredProcedure,
                        CommandText = ("AddSensorData")
                    };

                    var param = new SqlParameter("@studyID", studyId);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Monitor_Date", ssInsert.MonitorDate);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Monitor_Time", ssInsert.MonitorTime);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Monitor_ID", ssInsert.MonitorId);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Transmitter_ID", ssInsert.TransmitterId);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Lot", ssInsert.SensorLot);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Inserter_First_Name", ssInsert.InserterFirstName);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Inserter_Last_Name", ssInsert.InserterLastName);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Location", ssInsert.SensorLocation);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@P_SensorType", ssInsert.SensorType);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Expire_Date", ssInsert.ExpirationDate);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Reason", 1);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Date_Created", DateTime.Now);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@Sensor_Row", "1");
                    cmd.Parameters.Add(param);


                    conn.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Nlogger.LogError(ex);
                    return(false);
                }
            }
            return(true);
        }
        //  Retrieve Revit family types in Active document
        public IList <Element> GetRevitFamilyTypesInActiveDocument(RevitFamily famType)
        {
            NLogger.LogText("Entered GetRevitFamiliesInActiveDocument");

            IList <Element> genModElements = null;

            try
            {
                Type RevitFamType = Type.GetType(famType.Type);

                var genModelTypeCollector = new FilteredElementCollector(doc);
                genModelTypeCollector.OfClass(RevitFamType);

                if (!string.IsNullOrEmpty(famType.Category))
                {
                    BuiltInCategory RevitFamilyCategory = (BuiltInCategory)Enum.Parse(typeof(BuiltInCategory), famType.Category, true);
                    genModelTypeCollector.OfCategory(RevitFamilyCategory);
                }
                genModElements = genModelTypeCollector.ToElements();
            }
            catch (Exception ex)
            {
                NLogger.LogError(ex);
                NLogger.LogText("Exit GetRevitFamiliesInActiveDocument with error");

                throw (ex);
            }

            NLogger.LogText($"Extracted {genModElements.Count()} Families from Revit document");

            NLogger.LogText("Exit GetRevitFamiliesInActiveDocument");

            return(genModElements);
        }
示例#5
0
        static void Main()
        {
            try
            {
                //生成实体
                Sugar sqlSugar = new Sugar();
                sqlSugar.setCon(AppConfSetting.ConnectionString);
                sqlSugar.sugarClient.Open();
                sqlSugar.sugarClient.DbFirst
                .IsCreateDefaultValue().IsCreateAttribute().CreateClassFile("D:\\Models", "Ris.Dal.Entitys");
                sqlSugar.sugarClient.Close();


                //设置应用程序处理异常方式:ThreadException处理
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
                //处理UI线程异常
                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
                //处理非UI线程异常
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

                #region 应用程序的主入口点
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                //Application.Run(new DeptSettingForm());
                Application.Run(new LoginForm());
                #endregion
            }
            catch (Exception ex)
            {
                string str = GetExceptionMsg(ex, string.Empty);
                MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                NLogger.LogError(str, ex);
                Application.Exit();
            }
        }
        public HttpResponseMessage Properties(JObject obj)
        {
            Opts.AppName    = "Metadata";
            Opts.MethodName = "Properties";
            Opts.FileName   = Convert.ToString(obj["FileName"]);
            Opts.FolderName = Convert.ToString(obj["id"]);

            try
            {
                var workbook = new Workbook(Opts.WorkingFileName);
                return(Request.CreateResponse(HttpStatusCode.OK, new PropertiesResponse(workbook)));
            }
            catch (Exception e)
            {
                var message = $"{e.Message} | FileName = {Convert.ToString(obj["FileName"])}";
                NLogger.LogError(App, "Properties", message, Convert.ToString(obj["id"]));

                var response = new Response
                {
                    StatusCode = 500,
                    Status     = e.Message,
                    FolderName = Opts.FolderName,
                    Text       = "Metadata Properties"
                };
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response));
            }
        }
        public async Task <Response> Clear(JObject obj)
        {
            Opts.AppName    = "Metadata";
            Opts.MethodName = "Clear";
            try
            {
                Opts.FileName       = Convert.ToString(obj["FileName"]);
                Opts.ResultFileName = Opts.FileName;
                Opts.FolderName     = Convert.ToString(obj["id"]);

                var workbook = new Workbook(Opts.WorkingFileName);
                workbook.BuiltInDocumentProperties.Clear();
                workbook.CustomDocumentProperties.Clear();

                return(await Process((inFilePath, outPath, zipOutFolder) => { workbook.Save(outPath); }));
            }
            catch (Exception e)
            {
                var message = $"{e.Message} | FileName = {Convert.ToString(obj["FileName"])}";
                NLogger.LogError(App, "Clear", message, Convert.ToString(obj["id"]));

                return(await Task.FromResult(new Response
                {
                    StatusCode = 500,
                    Status = e.Message,
                    FolderName = Convert.ToString(obj["id"]),
                    Text = "Metadata Clear"
                }));
            }
        }
示例#8
0
        public HttpResponseMessage Download()
        {
            var zippedData       = Request.Content.ReadAsByteArrayAsync().Result;
            var decompressString = Encoding.UTF8.GetString(Decompress(zippedData));
            var obj            = JObject.Parse(decompressString);
            var p              = Convert.ToString(obj["p"]);
            var uid            = Convert.ToString(obj["uid"]);
            var file           = Convert.ToString(obj["file"]);
            var gridJsWorkbook = new GridJsWorkbook();
            var folderName     = Guid.NewGuid().ToString();
            var outPath        = AppSettings.OutputDirectory + folderName;
            var fullPath       = outPath + "/" + file;

            var gridInterruptMonitor = new GridInterruptMonitor();

            gridJsWorkbook.SetInterruptMonitorForSave(gridInterruptMonitor);
            var thread = new Thread(GridInterruptMonitor);

            try
            {
                thread.Start(new object[] { gridInterruptMonitor, Api.Configuration.MillisecondsTimeout, file });
                gridJsWorkbook.MergeExcelFileFromJson(uid, p);
                Directory.CreateDirectory(outPath);
                gridJsWorkbook.SaveToExcelFile(fullPath);

                var response = new Response
                {
                    StatusCode = 200,
                    Status     = "OK",
                    FileName   = file,
                    FolderName = folderName
                };
                return(Request.CreateResponse(HttpStatusCode.OK, response));
            }
            catch (Exception e)
            {
                var exception = e.InnerException ?? e;
                var message   = $"{e.Message} | File = {file} | UId = {uid} | P = {p}";
                NLogger.LogError(App, "Download", message, folderName);

                var status = exception.Message;
                if (e is GridCellException gridCellException && gridCellException.Code == GridExceptionType.Interrupted)
                {
                    NLogger.LogError($"Editor Download=>{folderName}=>{AppSettings.ProcessingTimedout}");
                    status = AppSettings.ProcessingTimedout;
                }

                var response = new Response
                {
                    StatusCode = 500,
                    Status     = status,
                    Text       = "Editor Download"
                };
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response));
            }
            finally
            {
                thread.Interrupt();
            }
        }
示例#9
0
        public async Task <HttpResponseMessage> Upload(string folderName)
        {
            try
            {
                var provider = new MultipartFormDataStreamProvider(AppSettings.WorkingDirectory);
                await Request.Content.ReadAsMultipartAsync(provider);

                Directory.CreateDirectory(Path.Combine(AppSettings.WorkingDirectory, folderName));

                foreach (var file in provider.FileData)
                {
                    var name = file.Headers.ContentDisposition.FileName.Trim('"');
                    var path = Path.Combine(AppSettings.WorkingDirectory, folderName, name);
                    File.Copy(file.LocalFileName, path, true);
                    File.Delete(file.LocalFileName);
                }

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception e)
            {
                NLogger.LogError(App, "Upload", e.Message, folderName);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, e));
            }
        }
示例#10
0
        public HttpResponseMessage Image(string id, string uid)
        {
            try
            {
                using (var ms = new MemoryStream())
                {
                    var img = GridJsWorkbook.GetImageFromFile(uid, id);
                    img.Save(ms, ImageFormat.Png);

                    var result = new HttpResponseMessage(HttpStatusCode.OK)
                    {
                        Content = new ByteArrayContent(ms.ToArray())
                    };
                    result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");

                    return(result);
                }
            }
            catch (Exception e)
            {
                var message = $"{e.Message} | PicId = {id} | UId = {uid}";
                NLogger.LogError(App, "Image", message, "null");

                var response = new Response
                {
                    StatusCode = 500,
                    Status     = e.Message,
                    Text       = "Compare Image"
                };
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response));
            }
        }
示例#11
0
        ///<Summary>
        /// Search method to perform search
        ///</Summary>
        public async Task <Response> Search(string fileName, string folderName, string query)
        {
            // License.SetAsposeCellsLicense();

            var taskResp = Process("SearchResults", folderName, ".txt", false,
                                   (inFilePath, outPath, zipOutFolder) =>
            {
                var fn        = AppSettings.WorkingDirectory + folderName + "/" + fileName;
                var stopWatch = new Stopwatch();
                stopWatch.Start();
                NLogger.LogInfo($"Search {query}=>{fn}=>Start");

                var task        = Task.Run(() => { SearchQuery(fileName, folderName, query, outPath); });
                var isCompleted = task.Wait(Api.Configuration.MillisecondsTimeout);

                if (!isCompleted)
                {
                    NLogger.LogError($"Search {query}=>{fn}=>{AppSettings.ProcessingTimedout}");
                    throw new TimeoutException(AppSettings.ProcessingTimedout);
                }

                stopWatch.Stop();
                NLogger.LogInfo($"Search {query}=>{fn}=>cost seconds:{stopWatch.Elapsed.TotalSeconds}");
            });

            if (MFoundNothing)
            {
                taskResp.Result.FileProcessingErrorCode = FileProcessingErrorCode.NoSearchResults;
            }

            return(await taskResp);
        }
示例#12
0
        //  Load list of Inventor Templates from user selected path, applying filter on files extension
        public List <FileInfo> GetInventorTemplates(string path)
        {
            NLogger.LogText("Entered GetInventorTemplates method with path {path}", path);

            List <FileInfo> inventorTemplates = null;
            List <string>   fileExtensions    = new List <string> {
                ".iam", ".ipt", ".zip"
            };

            try
            {
                var g = Directory.EnumerateFiles(path).Select(p => new FileInfo(p));

                NLogger.LogText("Retrieved Inventor files {InventorFiles}", g.ToList().Count.ToString());

                inventorTemplates = g.Where(j => fileExtensions.Contains(j.Extension)).ToList();

                NLogger.LogText("Filtered Inventor files {InventorFiles}", inventorTemplates.Count.ToString());

                NLogger.LogText("Exit GetInventorTemplates method");
            }
            catch (Exception ex)
            {
                NLogger.LogError($"Following error occurred in GetInventorTemplates: {ex}");
                throw new UIRelevantException(LanguageHandler.GetString("msgBox_BIM360NotSync"));
            }

            return(inventorTemplates);
        }
示例#13
0
        private static void GetFirstLastChecksSensorDates(CgmFileInfo cgmFileInfo, int studyId)
        {
            String        strConn = ConfigurationManager.ConnectionStrings["Halfpint"].ToString();
            SqlDataReader rdr     = null;

            using (var conn = new SqlConnection(strConn))
            {
                try
                {
                    var cmd = new SqlCommand("", conn)
                    {
                        CommandType = CommandType.StoredProcedure, CommandText = "GetChecksFirstAndLastSensorDateTime"
                    };
                    var param = new SqlParameter("@studyId", studyId);
                    cmd.Parameters.Add(param);

                    conn.Open();
                    rdr = cmd.ExecuteReader();
                    if (rdr.Read())
                    {
                        var pos = rdr.GetOrdinal("firstDate");
                        if (!rdr.IsDBNull(pos))
                        {
                            cgmFileInfo.FirstChecksSensorDateTime = rdr.GetDateTime(pos);
                        }

                        pos = rdr.GetOrdinal("lastDate");
                        if (!rdr.IsDBNull(pos))
                        {
                            cgmFileInfo.LastChecksSensorDateTime = rdr.GetDateTime(pos);
                        }
                    }
                    rdr.Close();
                }
                catch (Exception ex)
                {
                    Nlogger.LogError(ex);
                }
                finally
                {
                    if (rdr != null)
                    {
                        rdr.Close();
                    }
                }
            }
        }
示例#14
0
        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            string str = GetExceptionMsg(e.Exception, e.ToString());

            MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            NLogger.LogError(str, e.Exception);
            Application.Exit();
        }
示例#15
0
        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());

            MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            NLogger.LogError(str);
            Application.Exit();
        }
示例#16
0
        public static void HandleErrorInForgeResponse(string messageParam, ForgeRestResponse res)
        {
            NLogger.LogText($"Exit {messageParam} with Error");
            var ex = new Exception($"Following error occurred: Response Content: {res.ResponseContent}; Response Error: {res.RetResponse.ErrorMessage}");

            NLogger.LogError(ex);

            throw ex;
        }
示例#17
0
        public async Task <Responses> Compare()
        {
            var sessionId = Guid.NewGuid().ToString();

            try
            {
                var taskUpload = Task.Run(() => UploadWorkbooks(sessionId));
                taskUpload.Wait(Api.Configuration.MillisecondsTimeout);
                if (!taskUpload.IsCompleted)
                {
                    NLogger.LogError($"Comparison UploadWorkbooks=>{sessionId}=>{AppSettings.ProcessingTimedout}");
                    throw new TimeoutException(AppSettings.ProcessingTimedout);
                }

                var docs = taskUpload.Result;
                if (docs == null)
                {
                    return((Responses)PasswordProtectedResponse);
                }
                if (docs.Length == 0 || docs.Length > MaximumUploadFiles)
                {
                    return((Responses)MaximumFileLimitsResponse);
                }
                SetDefaultOptions(docs);
                Opts.CreateZip = false;

                Directory.CreateDirectory(AppSettings.OutputDirectory + sessionId);
                foreach (var doc in docs)
                {
                    var outFileName = Path.GetFileName(doc.FileName);
                    var outPath     = AppSettings.OutputDirectory + sessionId + "/" + outFileName;
                    SaveDocument(doc, outPath, sessionId, GetSaveFormatType(doc.FileName));
                }

                return(new Responses
                {
                    StatusCode = 200,
                    Status = "OK",
                    FileName = Path.GetFileName(docs[0].FileName),
                    FileName2 = Path.GetFileName(docs[1].FileName),
                    FolderName = sessionId
                });
            }
            catch (Exception e)
            {
                var exception = e.InnerException ?? e;
                NLogger.LogError(App, "Compare", exception.Message, sessionId);

                return(new Responses
                {
                    StatusCode = 500,
                    Status = exception.Message,
                    FolderName = sessionId,
                    Text = "Compare"
                });
            }
        }
示例#18
0
        private static IEnumerable <SiteInfoShort> GetSitesForCompletedSubjects()
        {
            var           list = new List <SiteInfoShort>();
            SqlDataReader rdr  = null;

            var strConn = ConfigurationManager.ConnectionStrings["Halfpint"].ToString();

            using (var conn = new SqlConnection(strConn))
            {
                try
                {
                    var cmd = new SqlCommand("", conn)
                    {
                        CommandType = CommandType.StoredProcedure,
                        CommandText = ("GetSitesForCompletedSubjects")
                    };
                    conn.Open();
                    rdr = cmd.ExecuteReader();

                    while (rdr.Read())
                    {
                        var ss = new SiteInfoShort {
                            Id = rdr.GetInt32(1), SiteCode = rdr.GetString(2)
                        };

                        list.Add(ss);
                    }
                    rdr.Close();
                }
                catch (Exception ex)
                {
                    Nlogger.LogError(ex);
                }
                finally
                {
                    if (rdr != null)
                    {
                        rdr.Close();
                    }
                }
            }
            return(list);
        }
示例#19
0
        public async Task <Response> Editor()
        {
            var sessionId = Guid.NewGuid().ToString();

            try
            {
                var taskUpload = Task.Run(() => UploadWorkbooks(sessionId));
                taskUpload.Wait(Api.Configuration.MillisecondsTimeout);
                if (!taskUpload.IsCompleted)
                {
                    NLogger.LogError($"Editor UploadWorkbooks=>{sessionId}=>{AppSettings.ProcessingTimedout}");
                    throw new TimeoutException(AppSettings.ProcessingTimedout);
                }

                var docs = taskUpload.Result;
                if (docs == null)
                {
                    return(PasswordProtectedResponse);
                }
                if (docs.Length == 0 || docs.Length > MaximumUploadFiles)
                {
                    return(MaximumFileLimitsResponse);
                }
                SetDefaultOptions(docs);
                Opts.AppName     = "Editor";
                Opts.MethodName  = "Editor";
                Opts.ZipFileName = docs.Length > 1 ? "Editor documents" : Path.GetFileNameWithoutExtension(docs[0].FileName);

                return(await Process((inFilePath, outPath, zipOutFolder) =>
                {
                    var stopWatch = new Stopwatch();
                    stopWatch.Start();
                    NLogger.LogInfo($"{App}=>{string.Join(",", docs.Select(t => t.FileName))}=>Start");

                    var tasks = docs.Select(doc => Task.Factory.StartNew(() => { SaveDocument(doc, outPath, zipOutFolder, GetSaveFormatType(doc.FileName)); })).ToArray();
                    Task.WaitAll(tasks);

                    stopWatch.Stop();
                    NLogger.LogInfo($"{App}=>{string.Join(",", docs.Select(t => t.FileName))}=>cost seconds:{stopWatch.Elapsed.TotalSeconds}");
                }));
            }
            catch (Exception e)
            {
                var exception = e.InnerException ?? e;
                NLogger.LogError(App, "Editor", exception.Message, sessionId);

                return(new Response
                {
                    StatusCode = 500,
                    Status = exception.Message,
                    FolderName = sessionId,
                    Text = "Editor"
                });
            }
        }
示例#20
0
        /// <summary>
        /// On Exception
        /// </summary>
        public override void OnException(HttpActionExecutedContext context)
        {
            var actionName = (context.ActionContext?.ActionDescriptor as ReflectedHttpActionDescriptor)?.ActionName ?? new StackTrace(context.Exception).GetFrame(0).GetMethod().Name;

            NLogger.LogError(actionName, actionName, context.Exception.Message, "null");

            context.Response = new HttpResponseMessage(System.Net.HttpStatusCode.InternalServerError)
            {
                ReasonPhrase = actionName
            };
        }
        public ActionResult TemplateUpload(HttpPostedFileBase file)
        {
            try
            {
                //throw new Exception("This is a test error!");
                if (file != null && file.ContentLength > 0)
                {
                    var fileName = "Checks_tmpl.xlsm";
                    var path     = Path.Combine(Server.MapPath("~/ssTemplate"), fileName);
                    file.SaveAs(path);
                }
            }
            catch (Exception ex)
            {
                nlogger.LogError(ex.Message);
                return(RedirectToAction("TemplateUploadFailed"));
            }

            return(RedirectToAction("TemplateUploadSuccess"));
        }
示例#22
0
        //  Load or attach to Inventor Process
        public /*async Task*/ void StartInventorApplication()
        {
            NLogger.LogText("Entered StartInventorApplication");

            try
            {
                try
                {
                    NLogger.LogText("StartInventorApplication - Try to attach to an active Inventor process");

                    // Get active inventor object
                    //await Task.Run(() =>
                    //{
                    m_InventorApplication = Marshal.GetActiveObject("Inventor.Application") as Inventor.Application;
                    //});

                    NLogger.LogText("StartInventorApplication - Attached sucessfully to an active Inventor process");
                }
                catch (COMException ex)
                {
                    NLogger.LogText("StartInventorApplication - Error in attaching to the Inventor process");

                    NLogger.LogError(ex);

                    try
                    {
                        NLogger.LogText("StartInventorApplication - Try to activate an Inventor process");

                        //  If not, start a new instance
                        Type invAppType = Type.GetTypeFromProgID("Inventor.Application");

                        //await Task.Run(() =>
                        //{
                        m_InventorApplication         = (Application)Activator.CreateInstance(invAppType);
                        m_InventorApplication.Visible = false;
                        started = true;
                        //});

                        NLogger.LogText("StartInventorApplication - Inventor process activated sucessfully");
                    }
                    catch (Exception ex2)
                    {
                        NLogger.LogText("StartInventorApplication - Error in activating the Inventor process");

                        NLogger.LogError(ex2);
                    }
                }
            }
            catch (Exception e)
            {
                NLogger.LogError(e);
            }
        }
示例#23
0
        public static int SaveStaffEnrollmentPage(EnrollmentContentModel ecm)
        {
            var strConn = ConfigurationManager.ConnectionStrings["Halfpint"].ToString();

            using (var conn = new SqlConnection(strConn))
            {
                try
                {
                    var cmd = new SqlCommand("", conn)
                    {
                        CommandType = System.Data.CommandType.StoredProcedure,
                        CommandText = ("SaveStaffEnrollmentPage")
                    };
                    var param = new SqlParameter("@enrollmentContent", ecm.EnrollmentContent);
                    cmd.Parameters.Add(param);
                    param = new SqlParameter("@announcementContent", ecm.AnnouncementContent);
                    cmd.Parameters.Add(param);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Nlogger.LogError(ex);
                    return(0);
                }
            }
            return(1);
        }
示例#24
0
        public async Task <Response> Search(string query)
        {
            var          sessionId = Guid.NewGuid().ToString();
            const string action    = "Search text";

            try
            {
                var taskUpload = Task.Run(() => UploadWorkbooks(sessionId));
                taskUpload.Wait(Api.Configuration.MillisecondsTimeout);
                if (!taskUpload.IsCompleted)
                {
                    NLogger.LogError($"Search UploadWorkbooks=>{sessionId}=>{AppSettings.ProcessingTimedout}");
                    throw new TimeoutException(AppSettings.ProcessingTimedout);
                }

                var docs = taskUpload.Result;
                if (docs == null)
                {
                    return(PasswordProtectedResponse);
                }
                if (docs.Length == 0 || docs.Length > MaximumUploadFiles)
                {
                    return(MaximumFileLimitsResponse);
                }

                SetDefaultOptions(docs);
                Opts.AppName        = "Search";
                Opts.MethodName     = "Search";
                Opts.OutputType     = ".xlsx";
                Opts.ResultFileName = "Search Results";
                Opts.CreateZip      = false;

                var fileName   = Path.GetFileName(docs[0].FileName);
                var folderName = docs[0].FolderName;

                return(await Search(fileName, folderName, query));
            }
            catch (Exception e)
            {
                var exception = e.InnerException ?? e;
                var message   = $"{exception.Message} | query = {query}";
                NLogger.LogError(App, "Search", message, sessionId);

                return(new Response
                {
                    StatusCode = 500,
                    Status = exception.Message,
                    FolderName = sessionId,
                    Text = action
                });
            }
        }
        public async Task <Response> Download(JObject obj)
        {
            Opts.AppName    = "Metadata";
            Opts.MethodName = "Download";
            try
            {
                Opts.FileName       = Convert.ToString(obj["FileName"]);
                Opts.ResultFileName = Opts.FileName;
                Opts.FolderName     = Convert.ToString(obj["id"]);
                var workbook = new Workbook(Opts.WorkingFileName);

                var pars = obj["properties"]["BuiltIn"].ToObject <List <DocProperty> >();
                SetBuiltInProperties(workbook, pars);
                pars = obj["properties"]["Custom"].ToObject <List <DocProperty> >();
                SetCustomProperties(workbook, pars);

                return(await Process((inFilePath, outPath, zipOutFolder) =>
                {
                    var stopWatch = new Stopwatch();
                    stopWatch.Start();
                    NLogger.LogInfo($"Excel Metadata=>{outPath}=>Start");

                    var task = Task.Run(() => { workbook.Save(outPath); });
                    var isCompleted = task.Wait(Api.Configuration.MillisecondsTimeout);

                    if (!isCompleted)
                    {
                        NLogger.LogError($"Excel Metadata=>{outPath}=>{AppSettings.ProcessingTimedout}");
                        throw new TimeoutException(AppSettings.ProcessingTimedout);
                    }

                    stopWatch.Stop();
                    NLogger.LogInfo($"Excel Metadata=>{outPath}=>cost seconds:{stopWatch.Elapsed.TotalSeconds}");
                }));
            }
            catch (Exception e)
            {
                var exception = e.InnerException ?? e;
                var message   = $"{exception.Message} | FileName = {Convert.ToString(obj["FileName"])}";
                NLogger.LogError(App, "Download", message, Convert.ToString(obj["id"]));

                return(await Task.FromResult(new Response
                {
                    StatusCode = 500,
                    Status = exception.Message,
                    FolderName = Convert.ToString(obj["id"]),
                    Text = "Metadata Download"
                }));
            }
        }
示例#26
0
        private static void AssembleCellsData(string inFilePath, string outPath, string templateFilename, string datasourceFilename, string datasourceName)
        {
            var dirPath = Path.GetDirectoryName(inFilePath) + "/";

            var dataXlsx = dirPath + datasourceFilename;

            // var dataDir = Path.GetDirectoryName(dataFolderName) + "/";
            // var dataXlsx = dataDir + datasourceFilename;

            var wb = new Workbook(dataXlsx);

            var ws = wb.Worksheets[0];

            var totalRows    = ws.Cells.LastCell.Row + 1;
            var totalColumns = ws.Cells.LastCell.Column + 1;

            var dt = ws.Cells.ExportDataTable(0, 0, totalRows, totalColumns, true);

            dt.TableName = datasourceName;

            var templateXlsx = dirPath + templateFilename;

            // var tempDir = Path.GetDirectoryName(tempFolderName) + '/';
            // var templateXlsx = tempDir + templateFilename;

            var wbTemplate = new Workbook(templateXlsx);
            var wbd        = new WorkbookDesigner(wbTemplate);

            wbd.SetDataSource(dt);

            wbd.Process();

            var stopWatch = new Stopwatch();

            stopWatch.Start();
            NLogger.LogInfo($"Assemble=>dataXlsx:{dataXlsx}||templateXlsx:{templateXlsx}=>Start");

            var task        = Task.Run(() => { wbTemplate.Save(outPath); });
            var isCompleted = task.Wait(Api.Configuration.MillisecondsTimeout);

            if (!isCompleted)
            {
                NLogger.LogError($"Assemble=>dataXlsx:{dataXlsx}||templateXlsx:{templateXlsx}=>{AppSettings.ProcessingTimedout}");
                throw new TimeoutException(AppSettings.ProcessingTimedout);
            }

            stopWatch.Stop();
            NLogger.LogInfo($"Assemble=>dataXlsx:{dataXlsx}||templateXlsx:{templateXlsx}=>cost seconds:{stopWatch.Elapsed.TotalSeconds}");
        }
        public async Task <ReportResult> Error([FromBody] ReportModel model)
        {
            try
            {
                return(await Task.Run(() => ReportService.Submit(model)));
            }
            catch (Exception e)
            {
                var exception = e.InnerException ?? e;
                NLogger.LogError("Report", "Error", exception.Message, "null");

                return(new ReportResult
                {
                    StatusCode = 500,
                    Status = exception.Message
                });
            }
        }
示例#28
0
        public HttpResponseMessage NewWorkbook()
        {
            var folderName = Guid.NewGuid().ToString();

            try
            {
                const string outfileName     = "book1.xlsx";
                var          outputDirectory = AppSettings.OutputDirectory + folderName;
                if (!Directory.Exists(outputDirectory))
                {
                    Directory.CreateDirectory(outputDirectory);
                }

                var outPath  = outputDirectory + "/" + outfileName;
                var workbook = new Workbook();
                workbook.Worksheets[0].Cells["A50"].PutValue("");
                workbook.Worksheets[0].Cells.StandardHeight = 20;
                workbook.Save(outPath);

                var response = new Response
                {
                    StatusCode = 200,
                    Status     = "OK",
                    FileName   = outfileName,
                    FolderName = folderName
                };
                return(Request.CreateResponse(HttpStatusCode.OK, response));
            }
            catch (Exception e)
            {
                NLogger.LogError(App, "NewWorkbook", e.Message, folderName);

                var response = new Response
                {
                    StatusCode = 500,
                    Status     = e.Message,
                    Text       = "Editor New Workbook"
                };
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response));
            }
        }
示例#29
0
        public HttpResponseMessage UpdateCell(JObject obj)
        {
            var    p   = Convert.ToString(obj["p"]);
            var    uid = Convert.ToString(obj["uid"]);
            string ret = null;

            try
            {
                var isCompleted = Task.Run(() =>
                {
                    var gwb = new GridJsWorkbook();
                    ret     = gwb.UpdateCell(p, uid);
                }).Wait(Api.Configuration.MillisecondsTimeout);

                if (!isCompleted || string.IsNullOrEmpty(ret))
                {
                    NLogger.LogError($"Editor UpdateCell {uid}=>{AppSettings.ProcessingTimedout}");
                    throw new TimeoutException(AppSettings.ProcessingTimedout);
                }

                return(new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(ret)
                });
            }
            catch (Exception e)
            {
                var exception = e.InnerException ?? e;
                var message   = $"{exception.Message} | UId = {uid} | P = {p}";
                NLogger.LogError(App, "UpdateCell", message, "null");

                var response = new Response
                {
                    StatusCode = 500,
                    Status     = exception.Message,
                    Text       = "Editor Update"
                };
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response));
            }
        }
示例#30
0
        /// <summary>
        /// Remove annotations in document
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="outPath"></param>
        private static void RemoveAnnotations(DocumentInfo doc, string outPath)
        {
            try
            {
                var(filename, folder) = PrepareFolder(doc, outPath);
                // doc.Workbook.Save($"{folder}/{filename}");

                var wb = doc.Workbook;

                var sb = new StringBuilder();

                foreach (var ws in wb.Worksheets)
                {
                    foreach (var cm in ws.Comments)
                    {
                        var cellName = CellsHelper.CellIndexToName(cm.Row, cm.Column);

                        var str = $"Sheet Name: \"{ws.Name}\", Cell Name: {cellName}, Comment Note: \r\n\"{cm.Note}\"";

                        sb.AppendLine(str);
                        sb.AppendLine();
                    }
                }

                File.WriteAllText($"{folder}/comments.txt", sb.ToString());

                foreach (var ws in wb.Worksheets)
                {
                    ws.Comments.Clear();
                }

                // wb.Save(outPath);
                wb.Save($"{folder}/{filename}");
            }
            catch (Exception e)
            {
                NLogger.LogError(App, "RemoveAnnotations", e.Message, outPath);
            }
        }