public HttpResponseMessage Post() { var output = GetFromRequestBody <Output>(); output.OutputStatus = OutputStatus.OS_ON_TRANSFER.ToString(); using (var mgr = IoC.Instance.Resolve <IBaseManager <Output> >()) { if (output.GetKey() == null) { mgr.Insert(ref output); } else { mgr.Update(output); } if (output == null) { throw new Exception("Couldn not insert output"); } EpsJob epsjob; try { epsjob = new EpsJob(output, User.Identity.Name); epsjob.DoJob(); } finally { var cs = output as ICustomXmlSerializable; cs.OverrideIgnore = false; mgr.Update(output); } if (epsjob.Reports.Count > 0 && epsjob.Tasks.Any(t => t.ExportType != null)) { var report = epsjob.Reports.First().Value; HttpResponseMessage result = Request.CreateResponse(HttpStatusCode.OK); result.Content = new ByteArrayContent(report.GetExportStream(epsjob.Tasks.First(t => t.ExportType != null).ExportType)); result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); return(result); } else { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Report stream not found")); } } }
/// <summary> /// Данные берутся из БД. /// </summary> //[Test] public void StartJob() { // //Инициализируем сервис. Считываем конфигурационные файлы // var configManager = ConfigManagerBase.Instance<EpsConfigManager>(null); // configManager.SetDefaultValues(); // configManager.OnEventErrorHandler += (exception, type, code, message, process, id, name, userName) => // Trace.WriteLine(exception != null // ? string.Format("Ошибка в EpsConfigManager'е. {0}", exception) // : string.Format("Сообщение EpsConfigManager'а. {0}", process)); // // //TODO: переделать на контекст // //configManager.ReadConfig<EpsConfig>(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EPS"), "EPS.config"); // var config = configManager.GetConfig() as EpsConfig; var ioutputmanager = CreateManager <Output>() as IOutputManager; if (ioutputmanager == null) { throw new DeveloperException("Can't get IOutputManager."); } //var listEpsOutput = ioutputmanager.GetEpsOutputLst(config.AmountQueue - job.Count, config.Handler); //TODO: переделать на контекст //config.Handler = 1; var listEpsOutput = ioutputmanager.GetEpsOutputLst(10, 1); if (listEpsOutput != null) { foreach (var output in listEpsOutput.Where(p => p != null)) { //Запускаем EPS Job var epsjob = new wmsMLC.EPS.wmsEPS.EpsJob(output, "User"); var task = new Task(epsjob.DoJob); task.Start(); Trace.WriteLine(string.Format("Задание с данными {0} запущено.", EpsHelper.GetKey(epsjob.GetOutput()))); Trace.WriteLine("======================================"); task.Wait(); using (var manager = IoC.Instance.Resolve <IBaseManager <Output> >()) { manager.Update(output); } } } }
public void StartJobWithCreateData() { //добавляем данные в output var epsTest = new wmsMLC.Tests.Functional.EPS.EpsTest(); var output = epsTest.CreateOutput(); var key = ((IKeyHandler)output).GetKey(); key.Should().NotBeNull("У сохраненного объекта Ключ должен быть заполнен."); //var mgr = IoC.Instance.Resolve<IBaseManager<Output>>(); //mgr.Insert(ref output); //Инициализируем сервис. Считываем конфигурационные файлы //TODO: переделать на контекст // var configManager = ConfigManagerBase.Instance<EpsConfigManager>(new ServiceContext("StartJobWithCreateData", null)); // configManager.SetDefaultValues(); // configManager.OnEventErrorHandler += (exception, type, code, message, process, id, name, userName) => // Trace.WriteLine(exception != null // ? string.Format("Ошибка в EpsConfigManager'е. {0}", exception) // : string.Format("Сообщение EpsConfigManager'а. {0}", process)); // // // //TODO: переделать на контекст // //configManager.ReadConfig<EpsConfig>(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EPS"), "EPS.config"); // var config = configManager.GetConfig(); //Запускаем EPS Job var epsjob = new wmsMLC.EPS.wmsEPS.EpsJob(output, "User"); var task = new Task(epsjob.DoJob); task.Start(); Trace.WriteLine(string.Format("Задание с данными {0} запущено.", EpsHelper.GetKey(epsjob.GetOutput()))); Trace.WriteLine("======================================"); task.Wait(); using (var manager = IoC.Instance.Resolve <IBaseManager <Output> >()) { manager.Update(output); } }