// GET: Admin/ManageJobs/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ManageJob manageJob = db.ManageJobs.Find(id); if (manageJob == null) { return(HttpNotFound()); } ViewBag.countryname = new SelectList(db.CountryMasters.ToList(), "CountryId", "CountryName"); ViewBag.statename = new List <SelectListItem>() { new SelectListItem() { Text = "", Value = "Select State" } }; ViewBag.RefCityId = new List <SelectListItem>() { new SelectListItem() { Text = "", Value = "Select City" } }; // ViewBag.RefCityId = new SelectList(db.CityMasters, "CityId", "CityName", manageJob.RefCityId); ViewBag.RefDepartmentId = new SelectList(db.Departments, "DepId", "DepName", manageJob.RefDepartmentId); return(View(manageJob)); }
public bool InvokeJob(string jobId) { ManageJob job = null; try { job = JobManager.Instance.Jobs.Find(j => j.Id.Equals(jobId)); if (job == null) { _logger.Warn($"Invoke【{jobId}】Error,Not Found Job【{jobId}】"); JobManager.Instance.NotifyClientLog(jobId, $"Invoke Job Error, Not Found Job."); return(false); } if (job.Cron.Equals(Constant.ServerCron)) { JobManager.Instance.InvokeServer(job); } else { JobManager.Instance.InvokeJob(job); } JobManager.Instance.NotifyClientLog(jobId, $"Invoke Job Success."); return(true); } catch (Exception e) { _logger.Error(e, $"Invoke Job【{jobId}】Error."); JobManager.Instance.NotifyClientLog(jobId, $"Invoke Job Error,{e.Message}"); return(false); } }
/// <summary> /// 执行DLL任务 /// </summary> /// <param name="job"></param> private void InvokeDllJob(ManageJob job) { NotifyClientLog(job.Id, "================= DLL Running ================="); var stopwatch = new Stopwatch(); stopwatch.Start(); var types = job.Params.Select(p => typeof(string)).ToArray(); var @params = job.Params.ToArray(); _logger.Info($"Execute DLL Job:{job.Name}[{job.WorkPath}, {job.ClassName},{job.MethodName} ({string.Join(",", @params)})]"); var writer = new HlcTextWriter(); writer.WriteHandler += str => { NotifyClientLog(job.Id, str); }; var domainProxy = DynamicUtil.LoadDomain(job.WorkPath); domainProxy.SetOut(writer); var invokeDll = domainProxy.Invoke(job.ClassName, job.MethodName, types, @params); if (invokeDll != null) { NotifyClientLog(job.Id, $"DLL Result:{invokeDll.ToString()}"); } NotifyClientLog(job.Id, $"================= DLL Job Finished, Elapsed [{stopwatch.Elapsed:g}] ================="); }
public ActionResult Create([Bind(Include = "JobId,JobName,JobSkills,JobExpirience,JobIsActive,JobDocuments,JobCreatedBy,JobModifiedBy,JobCreatedDate,JobModifiedDate,RefDepartmentId,RefCityId")] ManageJob manageJob, HttpPostedFileBase[] JobDocuments) { if (ModelState.IsValid) { var JobCreate = Convert.ToString(Session["name"]); manageJob.JobCreatedBy = JobCreate; manageJob.JobCreatedDate = DateTime.Now; string allfl = ""; foreach (HttpPostedFileBase file in JobDocuments) { if (file != null) { var InputFileName = Path.GetFileName(file.FileName); var ServerSavePath = Path.Combine(Server.MapPath("~/Content/Admin/UploadedFiles/") + InputFileName); //Save file to server folder file.SaveAs(ServerSavePath); //assigning file uploaded status to ViewBag for showing message to user. ViewBag.UploadStatus = JobDocuments.Count().ToString() + " files uploaded successfully."; allfl += InputFileName + ","; } } manageJob.JobDocuments = allfl.Remove(allfl.Length - 1, 1); db.ManageJobs.Add(manageJob); db.SaveChanges(); return(RedirectToAction("Index")); } // ViewBag.RefCityId = new SelectList(db.CityMasters, "CityId", "CityName", manageJob.RefCityId); ViewBag.RefDepartmentId = new SelectList(db.Departments, "DepId", "DepName", manageJob.RefDepartmentId); return(View(manageJob)); }
public bool RemoveJob(string jobId) { ManageJob job = null; try { job = JobManager.Instance.Jobs.Find(j => j.Id.Equals(jobId)); if (job == null) { _logger.Warn($"Remove Job【{jobId}】Error,Not Found Job【{jobId}】"); JobManager.Instance.NotifyClientLog(jobId, $"Remove Job Error, Not Found Job."); return(false); } JobManager.Instance.Jobs.Remove(job); JobManager.Instance.SaveJobs(); JobManager.Instance.DeleteJob(job.Id); _logger.Info($"Remove Job【{jobId}】Success."); JobManager.Instance.NotifyClientLog(jobId, $"Remove Job Success."); return(true); } catch (Exception e) { _logger.Error(e, $"Remove Job【{jobId}】Error."); JobManager.Instance.NotifyClientLog(jobId, $"Remove Job Error,{e.Message}"); return(false); } }
public ActionResult DeleteConfirmed(int id) { ManageJob manageJob = db.ManageJobs.Find(id); db.ManageJobs.Remove(manageJob); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Edit([Bind(Include = "JobId,JobName,JobSkills,JobExpirience,JobIsActive,JobDocuments,JobCreatedBy,JobModifiedBy,JobCreatedDate,JobModifiedDate,RefDepartmentId,RefCityId")] ManageJob manageJob) { if (ModelState.IsValid) { db.Entry(manageJob).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.RefCityId = new SelectList(db.CityMasters, "CityId", "CityName", manageJob.RefCityId); ViewBag.RefDepartmentId = new SelectList(db.Departments, "DepId", "DepName", manageJob.RefDepartmentId); return(View(manageJob)); }
private void UpdateJobRow(DataGridViewRow row, ManageJob job) { row.Cells["cln_id"].Value = job.Id; row.Cells["cln_name"].Value = job.Name; row.Cells["cln_type"].Value = job.Type; row.Cells["cln_cron"].Value = job.Cron; row.Cells["cln_preTime"].Value = job.PreviousFireTime?.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"); row.Cells["cln_nextTime"].Value = job.NextFireTime?.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"); row.Cells["cln_enable"].Value = JobEnable2Str(job.Enable); row.Cells["cln_state"].Value = JobState2Str(job.State); row.Tag = job; }
private void SwitchJobEnable(ManageJob job) { if (job == null) { return; } AsyncUtil.Run(() => job.Enable ? _jobManagerProxy.DisableJob(job.Id) : _jobManagerProxy.EnableJob(job.Id), result => { }, exception => { _logger.Error(exception, "Switch Job Status Error"); }); }
private void ShowLog(ManageJob job) { if (InvokeRequired) { Invoke(new MethodInvoker(() => ShowLog(job))); return; } if (job == null) { txt_log.Text = ""; return; } var jobId = job.Id; if (!_logDict.ContainsKey(jobId)) { AsyncUtil.Run(() => { var chacheLog = _jobManagerProxy.GetChacheLog(jobId); _logDict[jobId] = new Queue <string>(); foreach (var log in chacheLog) { _logDict[jobId].Enqueue(log); } }, () => ShowLog(job), exception => { _logger.Error(exception, "Get Cache Log Error"); }); return; } var logs = _logDict[jobId]; if (logs == null) { txt_log.Text = ""; return; } StringBuilder sb = new StringBuilder(); foreach (var log in logs) { sb.AppendLine(log); } txt_log.Text = sb.ToString(); txt_log.Select(txt_log.Text.Length, 0); txt_log.ScrollToCaret(); }
// GET: Admin/ManageJobs/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ManageJob manageJob = db.ManageJobs.Find(id); if (manageJob == null) { return(HttpNotFound()); } return(View(manageJob)); }
/// <summary> /// 从XML获得ManageJob,版本2 /// </summary> /// <param name="xmlJob"></param> /// <returns></returns> private ManageJob GetJobFromXml_1(XmlElement xmlJob) { var job = new ManageJob(); var name = xmlJob.GetAttribute("name"); job.Name = name; var type = xmlJob.GetAttribute("type"); Enum.TryParse(type, out JobType jobType); job.Type = jobType; var cron = xmlJob.GetAttribute("cron"); job.Cron = cron; var workPath = xmlJob.GetAttribute("path"); job.WorkPath = workPath; var filePath = xmlJob.GetAttribute("cmd"); job.Command = filePath; var className = xmlJob.GetAttribute("class"); job.ClassName = className; var methodName = xmlJob.GetAttribute("method"); job.MethodName = methodName; var enable = xmlJob.GetAttribute("enable"); bool.TryParse(enable, out bool jobEnable); job.Enable = jobEnable; var rank = xmlJob.GetAttribute("rank"); int.TryParse(rank, out int jobRank); job.Rank = jobRank; foreach (XmlElement xmlParam in xmlJob.GetElementsByTagName("param")) { job.Params.Add(xmlParam.Attributes["value"].Value); } return(job); }
/// <summary> /// 执行EXE服务 /// </summary> /// <param name="job"></param> private void InvokeExeServer(ManageJob job) { var args = string.Join(" ", job.Params); var jobIndex = Jobs.FindIndex(j => j.Id.Equals(job.Id)); if (jobIndex < 0) { return; } Jobs[jobIndex].State = JobState.Normal; UpdateClientJob(Jobs[jobIndex]); AsyncUtil.Run(() => { Thread.Sleep(500); Jobs[jobIndex].State = JobState.Normal; Jobs[jobIndex].PreviousFireTime = DateTimeOffset.Now; UpdateClientJob(Jobs[jobIndex]); NotifyClientLog(job.Id, "================= EXE Server Running =================="); _logger.Info($"Execute EXE Server Job:{job.Name}[{job.WorkPath} ({args})]"); ExecProcessAndWait(job.Id, job.WorkPath, args, Directory.GetParent(job.WorkPath).FullName); }, () => { Jobs[jobIndex].State = JobState.Complete; NotifyClientLog(job.Id, "================= EXE Server Finished =================="); UpdateClientJob(Jobs[jobIndex]); }, exception => { if (exception is AppDomainUnloadedException) { NotifyClientLog(job.Id, "================= EXE Server Uninstalled =================="); } else { _logger.Error(exception); NotifyClientLog(job.Id, "EXE Server Error。" + exception.Message); Jobs[jobIndex].State = JobState.Error; NotifyClientLog(job.Id, "================= EXE Server Error =================="); UpdateClientJob(Jobs[jobIndex]); } }); }
public ActionResult DeleteConfirmed(int id) { try { ManageJob manageJob = db.ManageJobs.Find(id); db.ManageJobs.Remove(manageJob); db.SaveChanges(); } catch (Exception ex) { TempData["err"] = ex.Message; } return(RedirectToAction("Index")); }
private void UpdateJob(ManageJob job) { foreach (DataGridViewRow row in dgv_data.Rows) { if (row.Cells["cln_id"].Value.Equals(job.Id)) { UpdateJobRow(row, job); return; } } var rowIndex = dgv_data.Rows.Add(); var newRow = dgv_data.Rows[rowIndex]; UpdateJobRow(newRow, job); }
// GET: User/ManageJobs/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ManageJob manageJob = db.ManageJobs.Find(id); if (manageJob == null) { return(HttpNotFound()); } ViewBag.RefCityId = new SelectList(db.CityMasters, "CityId", "CityName", manageJob.RefCityId); ViewBag.RefDepartmentId = new SelectList(db.Departments, "DepId", "DepName", manageJob.RefDepartmentId); return(View(manageJob)); }
/// <summary> /// 执行EXE任务 /// </summary> /// <param name="job"></param> private void InvokeExeJob(ManageJob job) { NotifyClientLog(job.Id, "================= EXE Job Running ================="); var stopwatch = new Stopwatch(); stopwatch.Start(); var args = string.Join(" ", job.Params); _logger.Info($"Execute exe Job:{job.Name}[{job.WorkPath}({args})]"); ExecProcessAndWait(job.Id, job.WorkPath, args, Directory.GetParent(job.WorkPath).FullName); NotifyClientLog(job.Id, $"================= EXE Finished, Elapsed [{stopwatch.Elapsed:g}] ================="); }
public bool AddJob(ManageJob job) { try { if (job == null) { _logger.Warn($"Add Job Error,Job is null"); JobManager.Instance.NotifyClientLog("", $"Add Job Error, Job is null"); return(false); } var oldJob = JobManager.Instance.Jobs.Find(j => j.Id.Equals(job.Id)); if (oldJob != null) { _logger.Warn($"Add Job【{job.Id}】Error,Job【{job.Id}】Existed."); JobManager.Instance.NotifyClientLog("", $"Add Job Error, Job Existed."); return(false); } if (JobManager.Instance.Jobs.Count <= 0) { job.Rank = 1; } else { job.Rank = JobManager.Instance.Jobs.Max(j => j.Rank) + 1; } JobManager.Instance.Jobs.Add(job); JobManager.Instance.SaveJobs(); JobManager.Instance.UpdateScheduler(job.Id); _logger.Info($"Add Job【{job.Id}】Success."); JobManager.Instance.NotifyClientLog(job.Id, $"Add Job Success."); return(true); } catch (Exception e) { _logger.Error(e, $"Add Job【{job?.Id}】Error."); JobManager.Instance.NotifyClientLog(job?.Id, $"Add Job Error,{e.Message}"); return(false); } }
/// <summary> /// 审核 /// </summary> /// <param name="p_id"></param> /// <returns></returns> public int PutPass(ManageJob manageJob) { int result = 0; try { //字符串修改 string str = "update ManageJob set M_Pass=1 where M_Id=@p_id"; //调用 result = DapperHelper <CompanyManage> .Execute(str, new { p_id = manageJob.M_Id }); } catch (Exception e) { Logger.Error(e.TargetSite.ToString()); } return(result); }
/// <summary> /// 提交简历 /// </summary> /// <param name="job"></param> /// <returns></returns> public int AddManageJob(ManageJob job) { string str = "insert into ManageJob values (@R_Name,@R_Phone,@R_Age,@R_EmailAddress,@C_CompanyName,@C_AvailablePositions,@C_TypeLabor,@M_Pass,@C_CompanyAddress)"; return(DapperHelper <ManageJob> .Execute(str, new { R_Name = job.R_Name, R_Phone = job.R_Phone, R_Age = job.R_Age, R_EmailAddress = job.R_Address, C_CompanyName = job.C_CompanyName, C_AvailablePositions = job.C_AvailablePositions, C_TypeLabor = job.C_TypeLabor, M_Pass = job.M_Pass, C_CompanyAddress = job.C_CompanyAddress, })); }
public void UpdatePass(int id, string name, string comName, string email, string adress) { ManageJob manageJob = new ManageJob(); manageJob.M_Id = id; manageJob.R_Name = name; string json = JsonConvert.SerializeObject(manageJob); string result = Sender("put", "/api/ManageJob", json); if (int.Parse(result) > 0) { System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); client.Host = "smtp.163.com";//使用163的SMTP服务器发送邮件 client.UseDefaultCredentials = true; client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; client.Credentials = new System.Net.NetworkCredential("*****@*****.**", "XY9992"); //163的SMTP服务器需要用163邮箱的用户名和smtp授权码作认证,如果没有需要去163申请个, //这里假定你已经拥有了一个163邮箱的账户,用户名为abc,密码为******* System.Net.Mail.MailMessage Message = new System.Net.Mail.MailMessage(); Message.From = new System.Net.Mail.MailAddress("*****@*****.**"); //这里需要注意,163似乎有规定发信人的邮箱地址必须是163的,而且发信人的邮箱用户名必须和上面SMTP服务器认证时的用户名相同 //因为上面用的用户名abc作SMTP服务器认证,所以这里发信人的邮箱地址也应该写为[email protected] Message.To.Add(email); //将邮件发送给Gmail //Message.To.Add("*****@*****.**");//将邮件发送给Gmail //Message.To.Add("*****@*****.**");//将邮件发送给QQ邮箱 Message.Subject = "" + comName + ""; string name1 = name.Substring(0, 1); Message.Body = "恭喜" + name1 + "先生/女士,您的简历在本公司通过审核,<br/> 请去" + adress + "参加面试"; Message.SubjectEncoding = System.Text.Encoding.UTF8; Message.BodyEncoding = System.Text.Encoding.UTF8; Message.Priority = System.Net.Mail.MailPriority.High; Message.IsBodyHtml = true; //可以为html try { client.Send(Message); } catch (Exception ex) { Logger.Error(ex.ToString()); throw; } } Response.Redirect("/CompanyManage/GetManageJob?selectId=" + seleid + "&page=" + _page + "&pageSize=" + 10); }
//提交简历 public ActionResult PostResumes(string cname, string position, string address, string rName, string rPhone, string rAge, string rAddress, string rSalary) { ManageJob job = new ManageJob(); job.C_CompanyName = cname; job.C_AvailablePositions = position; job.C_CompanyAddress = address; job.R_Name = rName; job.R_Phone = rPhone; job.R_Age = Convert.ToInt32(rAge); job.R_Address = rAddress; job.M_Pass = 0; job.C_TypeLabor = rSalary; string json = JsonConvert.SerializeObject(job); var result = Sender("post", "api/Resumes/AddManageJob", json); return(Json(result)); }
/// <summary> /// 执行CMD任务 /// </summary> /// <param name="job"></param> private void InvokeCmdJob(ManageJob job) { NotifyClientLog(job.Id, "================= CMD Running ================="); var stopwatch = new Stopwatch(); stopwatch.Start(); _logger.Info($"Execute CMD Job:{job.Name}[{job.Command}]"); var cmd = job.Command; var match = Regex.Match(cmd, "((?<exe>(\".+\")|(.+))? (?<args>.+))|(?<exe>(\".+\")|(.+))"); var exe = match.Groups["exe"].Value; var arguments = match.Groups["args"]?.Value ?? ""; ExecProcessAndWait(job.Id, exe, arguments, job.WorkPath); NotifyClientLog(job.Id, $"================= CMD Finished, Elapsed [{stopwatch.Elapsed:g}] ================="); }
private void FillJob(ManageJob job) { txt_name.Text = job.Name; cmb_type.Text = job.Type.ToString(); txt_cron.Text = job.Cron; cmb_enable.Text = job.Enable ? Resources.Enable : Resources.Disable; txt_workPath.Text = job.WorkPath; txt_cmd.Text = job.Command; InitCmbClasses(); cmb_classes.Text = job.ClassName; InitCmbMethods(); cmb_methods.Text = job.MethodName; foreach (var param in job.Params) { dgv_params.Rows.Add(param); } }
/// <summary> /// 执行Server /// </summary> /// <param name="job"></param> public void InvokeServer(ManageJob job) { switch (job.Type) { case JobType.DLL: InvokeDllServer(job); break; case JobType.EXE: InvokeExeServer(job); break; case JobType.CMD: InvokeCmdServer(job); break; default: _logger.Warn($"Unkonw Job Type【{job.Type}】"); break; } }
private ManageJob GetJob() { var job = _job; if (job == null) { job = new ManageJob(); } job.Name = txt_name.Text; Enum.TryParse(cmb_type.Text, out JobType jobType); job.Type = jobType; job.Cron = txt_cron.Text; job.Enable = Resources.Enable.Equals(cmb_enable.Text); job.WorkPath = txt_workPath.Text; job.Command = txt_cmd.Text; job.ClassName = cmb_classes.Text; job.MethodName = cmb_methods.Text; job.Params.Clear(); foreach (DataGridViewRow row in dgv_params.Rows) { var value = row.Cells["cln_param"].Value?.ToString(); if (!string.IsNullOrWhiteSpace(value)) { job.Params.Add(value); } } return(job); }
/// <summary> /// 任务信息转换为需要显示的任务信息 /// </summary> /// <param name="job">要显示的任务</param> /// <returns></returns> private ManageJob Job2Show(ManageJob job) { if (job.Cron.Equals(Constant.ServerCron)) { job.NextFireTime = null; job.State = job.Enable ? job.State : JobState.None; } else { var triggerKey = new TriggerKey(job.Id); var trigger = _scheduler.GetTrigger(triggerKey).Result; var preTime = trigger?.GetPreviousFireTimeUtc(); if (preTime != null) { job.PreviousFireTime = preTime; } job.NextFireTime = trigger?.GetNextFireTimeUtc(); job.State = TriggerState2JobState(_scheduler.GetTriggerState(triggerKey).Result); } return(job); }
public ActionResult Edit([Bind(Include = "JobId,JobName,JobSkills,JobExpirience,JobIsActive,JobDocuments,JobCreatedBy,JobModifiedBy,JobCreatedDate,JobModifiedDate,RefDepartmentId,RefCityId")] ManageJob manageJob) { if (ModelState.IsValid) { try { var ModifiedName = Convert.ToString(Session["name"]); manageJob.JobModifiedBy = ModifiedName; manageJob.JobModifiedDate = DateTime.Now; db.Entry(manageJob).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } catch (Exception ex) { TempData["err"] = ex.Message; } } ViewBag.RefCityId = new SelectList(db.CityMasters, "CityId", "CityName", manageJob.RefCityId); ViewBag.RefDepartmentId = new SelectList(db.Departments, "DepId", "DepName", manageJob.RefDepartmentId); return(View(manageJob)); }
public bool UpdateJob(ManageJob job) { try { if (job == null) { _logger.Warn($"Update Job Error, Job is null."); JobManager.Instance.NotifyClientLog("", $"Update Job Error, Job is null"); return(false); } var jobIndex = JobManager.Instance.Jobs.FindIndex(j => j.Id.Equals(job.Id)); if (jobIndex < 0) { _logger.Warn($"Update Job【{job.Id}】Error, Not Found Job【{job.Id}】"); JobManager.Instance.NotifyClientLog(job?.Id, $"Update Job Error, Not Found Job."); return(false); } JobManager.Instance.Jobs[jobIndex] = job; JobManager.Instance.SaveJobs(); JobManager.Instance.UpdateScheduler(job.Id); _logger.Info($"Update Job【{job.Id}】Success."); JobManager.Instance.NotifyClientLog(job?.Id, $"Update Job Success."); return(true); } catch (Exception e) { _logger.Error(e, $"Update Job【{job?.Id}】Error."); JobManager.Instance.NotifyClientLog(job?.Id, $"Update Job Error,{e.Message}"); return(false); } }
/// <summary> /// 从ManageJob创建XML /// </summary> /// <param name="xmlDoc"></param> /// <param name="job"></param> /// <returns></returns> private XmlElement CreateXmlJob(XmlDocument xmlDoc, ManageJob job) { var xmlJob = xmlDoc.CreateElement("Job"); xmlJob.SetAttribute("id", job.Id); xmlJob.SetAttribute("name", job.Name); xmlJob.SetAttribute("type", job.Type.ToString()); xmlJob.SetAttribute("cron", job.Cron); xmlJob.SetAttribute("path", job.WorkPath); xmlJob.SetAttribute("cmd", job.Command); xmlJob.SetAttribute("class", job.ClassName); xmlJob.SetAttribute("method", job.MethodName); xmlJob.SetAttribute("enable", job.Enable.ToString()); xmlJob.SetAttribute("rank", job.Rank.ToString()); foreach (var param in job.Params) { var xmlParam = xmlDoc.CreateElement("param"); xmlParam.SetAttribute("value", param); xmlJob.AppendChild(xmlParam); } return(xmlJob); }