Example #1
0
        public async Task <ActionResult <WorkflowSetting> > Handle([FromBody] SaveWorkflowSettingRequest request, [FromRoute] ApiVersion apiVersion, CancellationToken cancellationToken)
        {
            var workflowSettingsId  = request.Id;
            var workflowBlueprintId = request.WorkflowBlueprintId;
            var key = request.Key;

            var workflowSettings = !string.IsNullOrWhiteSpace(workflowSettingsId)
                ? await _workflowSettingsStore.FindByWorkflowBlueprintIdAndKeyAsync(workflowBlueprintId, key, cancellationToken)
                : default;

            if (workflowSettings == null)
            {
                workflowSettings = new WorkflowSetting
                {
                    Id = !string.IsNullOrWhiteSpace(workflowSettingsId) ? workflowSettingsId : _idGenerator.Generate(),
                };
            }

            workflowSettings.WorkflowBlueprintId = request.WorkflowBlueprintId.Trim();
            workflowSettings.Key   = request.Key.Trim();
            workflowSettings.Value = request.Value?.Trim();

            await _workflowSettingsStore.SaveAsync(workflowSettings, cancellationToken);

            return(CreatedAtAction("Handle", "Get", new { id = workflowSettings.Id, apiVersion = apiVersion.ToString() }, workflowSettings));
        }
        public async Task AddAsync(WorkflowSetting entity, CancellationToken cancellationToken = default)
        {
            await _mediator.Publish(new WorkflowSettingsSaving(entity), cancellationToken);

            await _store.AddAsync(entity, cancellationToken);

            await _mediator.Publish(new WorkflowSettingsSaved(entity), cancellationToken);
        }
        private WorkflowSetting Initialize(WorkflowSetting workflowSetting)
        {
            if (string.IsNullOrWhiteSpace(workflowSetting.Id))
            {
                workflowSetting.Id = _idGenerator.Generate();
            }

            return(workflowSetting);
        }
Example #4
0
        public JsonResult SetCustomSetting(string InstanceID, string SchemaCode, string SettingName, string SettingValue)
        {
            int n = WorkflowSetting.SetCustomSettingValue(InstanceID, SchemaCode, SettingName, SettingValue);

            if (n == 0)
            {
                AppUtility.Engine.LogWriter.Write("SetCustomSetting失败,0行受影响");
                return(Json(new { Success = false, EffectNumber = n }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { Success = true, EffectNumber = n }, JsonRequestBehavior.AllowGet));
        }
Example #5
0
        /// <summary>
        /// Convert HTML URL to PDF
        /// </summary>
        /// <param name="url">The HTTP or HTTPS URL</param>
        /// <param name="name">Name of the PDF file</param>
        /// <returns></returns>
        public async Task <bool> ConvertPdf2Word()
        {
            IsProgressRingActive = true;
            ProgressVisible      = Visibility.Visible;

            var workflowSetting    = new WorkflowSetting();
            var wfConvertPdfToWord = workflowSetting.AddNewConvertPdfToWordTask();

            wfConvertPdfToWord.Revision      = 1;
            wfConvertPdfToWord.KeepInputFile = false;

            Stream stream = await mInputFile.OpenStreamForReadAsync();


            var job = await mClient.StartNewJobAsync(workflowSetting, stream, mInputFile.Name);

            try
            {
                // Wait until job execution is completed and return PDF file
                var job_rsl = await job.WaitForJobExecutionCompletionAsync();

                // Save the job result to memory, and then prompt to save on disk
                using (var memoryStream = new MemoryStream())
                {
                    await job_rsl.FileData.Stream.CopyToAsync(memoryStream);

                    byte[] outputBytes = memoryStream.ToArray();

                    var outputFile = await PromptSaveDialoge(mInputFile.Name);

                    await FileIO.WriteBytesAsync(outputFile, outputBytes);
                }
            }
            catch (Exception ex)
            {
                // swallow exception
            }
            finally
            {
                IsProgressRingActive = false;
                ProgressVisible      = Visibility.Collapsed;
            }

            return(false);
        }
Example #6
0
        public async Task <WorkflowSetting> LoadSettingAsync(string workflowBlueprintId, string key, CancellationToken cancellationToken = default)
        {
            var providers = _workflowSettingsProviders;

            var value = new WorkflowSetting();

            foreach (var provider in providers)
            {
                var providerValue = await provider.GetWorkflowSettingAsync(workflowBlueprintId, key, cancellationToken);

                if (providerValue.Value != null)
                {
                    value = providerValue;
                }
            }

            return(value);
        }
Example #7
0
 public WorkflowSettingsSaved(WorkflowSetting workflowSetting) : base(workflowSetting)
 {
 }
Example #8
0
 public JsonResult GetCustomSetting(string InstanceID, string SettingName)
 {
     return(Json(WorkflowSetting.GetCustomSettingValue(InstanceID, SettingName), JsonRequestBehavior.AllowGet));
 }
 public Task DeleteAsync(WorkflowSetting entity, CancellationToken cancellationToken) => _store.DeleteAsync(entity, cancellationToken);
 public async Task AddAsync(WorkflowSetting entity, CancellationToken cancellationToken = default)
 {
     entity = Initialize(entity);
     await _store.AddAsync(entity, cancellationToken);
 }
 public async Task UpdateAsync(WorkflowSetting entity, CancellationToken cancellationToken)
 {
     entity = Initialize(entity);
     await _store.UpdateAsync(entity, cancellationToken);
 }
Example #12
0
 public WorkflowSettingsDeleted(WorkflowSetting workflowSetting) : base(workflowSetting)
 {
 }
Example #13
0
        public ActionResult Index(int?clientId, int?productId)
        {
            try
            {
                ViewBag.Error = "";

                #region Client Product productItem Session Check

                var userClientSession = (AppSession)Session["_UserClientSession_"];
                if (userClientSession == null || userClientSession.ClientId < 1 || userClientSession.ProductId < 1 || userClientSession.ProductItemId < 1)
                {
                    return(RedirectToAction("Index", "Dashboard"));
                }
                var ClientId      = clientId ?? userClientSession.ClientId;
                var ProductId     = productId ?? userClientSession.ProductId;
                var ProductItemId = userClientSession.ProductItemId;

                #endregion

                #region Current User session check

                var userData = MvcApplication.GetUserData(User.Identity.Name);
                if (userData == null || userData.UserId < 1)
                {
                    ViewBag.Error = "Session Has Expired! Please Re-Login";
                    return(View(new List <WorkflowSettingObj>()));
                }

                #endregion

                #region Check if workflow list if null else return to view

                if (Session["_WorkflowSettingList_"] is List <WorkflowSettingObj> WorkflowSetting && WorkflowSetting.Any())
                {
                    return(View(WorkflowSetting.Where(m => m.ClientId == ClientId && m.ProductId == ProductId).ToList()));
                }


                #endregion

                #region Request and response validations

                var searchObj = new WorkflowSettingSearchObj
                {
                    AdminUserId       = userData.UserId,
                    WorkflowSettingId = 0,
                    Status            = -2
                };
                var retVal = WorkflowSettingServices.LoadWorkflowSettings(searchObj, userData.Username);
                if (retVal?.Status == null)
                {
                    ViewBag.Error = " WorkflowSetting list is empty!";
                    return(View(new List <WorkflowSettingObj>()));
                }

                if (!retVal.Status.IsSuccessful)
                {
                    ViewBag.Error = string.IsNullOrEmpty(retVal.Status.Message.FriendlyMessage)
                        ? "  WorkflowSetting list is empty!"
                        : retVal.Status.Message.FriendlyMessage;
                    return(View(new List <WorkflowSettingObj>()));
                }
                if (retVal.WorkflowSettings == null || !retVal.WorkflowSettings.Any())
                {
                    ViewBag.Error = " WorkflowSetting list is empty!";
                    return(View(new List <WorkflowSettingObj>()));
                }

                #endregion

                #region Initialize list into session

                var WorkflowSettings = retVal.WorkflowSettings.OrderBy(m => m.WorkflowSettingId).ToList();

                Session["_WorkflowSettingList_"] = WorkflowSettings.Where(m => m.ClientId == ClientId && m.ProductId == ProductId && m.ProductItemId == ProductItemId).ToList();


                #endregion

                var clientProdWorkflowSettings = WorkflowSettings.Where(m => m.ClientId == ClientId && m.ProductId == ProductId).ToList();
                return(View(clientProdWorkflowSettings));
            }
            catch (Exception ex)
            {
                ViewBag.Error = ex.Message;
                UtilTools.LogE(ex.StackTrace, ex.Source, ex.Message);
                return(View(new List <WorkflowSettingObj>()));
            }
        }
        /// <summary>
        /// Convert HTML URL to PDF
        /// </summary>
        /// <param name="url">The HTTP or HTTPS URL</param>
        /// <param name="name">Name of the PDF file</param>
        /// <returns></returns>
        public async Task <bool> ConvertHTML2PDF(string name)
        {
            if (string.IsNullOrWhiteSpace(URL))
            {
                return(false);
            }

            // Check if URL is valid HTTP or HTTPS
            Uri  uriResult;
            bool result = Uri.TryCreate(URL, UriKind.Absolute, out uriResult) &&
                          (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);

            if (result == false)
            {
                return(false);
            }

            IsProgressRingActive = true;
            ProgressVisible      = Visibility.Visible;

            var workflowSetting = new WorkflowSetting();
            var wfConvertToPDF  = workflowSetting.AddNewConvertToPdfTask();

            string ddd = @"{ ""Url"": """ + URL + @""" }"; // @"{ ""Url"": ""https://www.pdftron.com/"" }";

            byte[]       byteArray = Encoding.UTF8.GetBytes(ddd);
            MemoryStream stream    = new MemoryStream(byteArray);

            var job = await mClient.StartNewJobAsync(workflowSetting, stream, "pdftron.bclurl");

            try
            {
                // Wait until job execution is completed and return PDF file
                var job_rsl = await job.WaitForJobExecutionCompletionAsync();

                var         folder     = ApplicationData.Current.LocalFolder;
                StorageFile outputFile = await folder.CreateFileAsync(name + ".pdf",
                                                                      CreationCollisionOption.ReplaceExisting);

                using (var memoryStream = new MemoryStream())
                {
                    await job_rsl.FileData.Stream.CopyToAsync(memoryStream);

                    byte[] outputBytes = memoryStream.ToArray();
                    await FileIO.WriteBytesAsync(outputFile, outputBytes);
                }

                // Open PDFDoc on PDFViewer
                PDFDoc doc = new PDFDoc(outputFile);
                PDFViewCtrl.SetDoc(doc);
            }
            catch (Exception ex)
            {
                // swallow exception
            }
            finally
            {
                IsProgressRingActive = false;
                ProgressVisible      = Visibility.Collapsed;
            }

            return(false);
        }
 public WorkflowSettingsNotification(WorkflowSetting workflowSetting) => WorkflowSetting = workflowSetting;
Example #16
0
        public JsonResult QueryModelInfo(string InstanceId)
        {
            #region 校验参数
            if (string.IsNullOrEmpty(InstanceId))
            {
                ResponseData <string> rspData = new ResponseData <string>();
                rspData.Code    = "-1";
                rspData.Message = "InstanceId为空";
                rspData.Success = false;
                return(Json(rspData));
            }
            InstanceContext context = AppUtility.Engine.InstanceManager.GetInstanceContext(InstanceId);
            if (context == null)
            {
                ResponseData <string> rspData = new ResponseData <string>();
                rspData.Code    = "-1";
                rspData.Message = "InstanceId错误";
                rspData.Success = false;
                return(Json(rspData));
            }
            if (context.BizObjectSchemaCode != "APPLICATION")
            {
                ResponseData <string> rspData = new ResponseData <string>();
                rspData.Code    = "-1";
                rspData.Message = "非APPLICATION流程";
                rspData.Success = false;
                return(Json(rspData));
            }

            #endregion

            #region 查询Vin码
            string sql_getvin = $"select VIN_NUMBER from i_application where objectid='{context.BizObjectId}'";
            string Vin        = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteScalar(sql_getvin) + string.Empty;
            if (string.IsNullOrEmpty(Vin))
            {
                ResponseData <string> rspData = new ResponseData <string>();
                rspData.Code    = "-1";
                rspData.Message = "Vin为空";
                rspData.Success = false;
                return(Json(rspData));
            }
            #endregion

            Vin = Vin.ToUpper();
            int validDays = 30;
            int.TryParse(ConfigurationManager.AppSettings["Che300_ModelValidDays"] + string.Empty, out validDays);

            var queryid = WorkflowSetting.GetCustomSettingValue(InstanceId, QUERY_ID);

            //是否有过查询记录;
            if (string.IsNullOrEmpty(queryid))
            {
                if (context.State == InstanceState.Finished)
                {
                    ResponseData <List <Model2> > rspData = new ResponseData <List <Model2> >();
                    rspData.Code    = "1";
                    rspData.Message = "ok";
                    rspData.Success = true;
                    rspData.Data    = new List <Model2>();
                    return(Json(rspData));
                }
                //历史是否有过查询过的记录;
                string    sql = $"select * from c_che300_model_by_vin where vinnumber='{Vin}' and querytime >to_date('{DateTime.Now.AddDays(-validDays).ToString()}','yyyy-MM-dd HH24:mi:ss') order by querytime desc";
                DataTable dt  = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(sql);
                //有记录
                if (dt != null && dt.Rows.Count > 0)
                {
                    queryid = dt.Rows[0]["queryid"] + string.Empty;
                    List <Model2> models = GetModelInfoByQueryId(queryid);

                    ResponseData <List <Model2> > rspData = new ResponseData <List <Model2> >();
                    rspData.Code    = "1";
                    rspData.Message = "ok";
                    rspData.Success = true;
                    rspData.Data    = models;
                    return(Json(rspData));
                }
                else//没有记录
                {
                    string methodUrl = ConfigurationManager.AppSettings["Che300_IdentifyModelByVIN"] + string.Empty;
                    string token     = ConfigurationManager.AppSettings["Che300_API_Token"] + string.Empty;
                    var    result    = HttpHelper.GetWebRequest($"{methodUrl}?vin={Vin}&token={token}");
                    if (string.IsNullOrEmpty(result))
                    {
                        ResponseData <string> rspData = new ResponseData <string>();
                        rspData.Code    = "-1";
                        rspData.Message = "查询超时,请刷新页面重试";
                        rspData.Success = false;
                        return(Json(rspData));
                    }
                    try
                    {
                        IdentifyModelByVINResult identifyModelByVINResult = JsonConvert.DeserializeObject <IdentifyModelByVINResult>(result);
                        if (identifyModelByVINResult.status == "1")
                        {
                            #region Save Data to DB
                            queryid = Guid.NewGuid().ToString();

                            var modelInfos = identifyModelByVINResult.modelInfo.OrderByDescending(a => a.model_price).ToList();

                            modelInfos.ForEach(a =>
                            {
                                a.model_price = a.model_price * 10000;
                            });
                            SaveModelToDB(Vin, queryid, modelInfos);
                            WorkflowSetting.SetCustomSettingValue(InstanceId, "APPLICATION", QUERY_ID, queryid);
                            #endregion

                            ResponseData <List <Model2> > rspData = new ResponseData <List <Model2> >();
                            rspData.Code    = "1";
                            rspData.Message = "ok";
                            rspData.Success = true;
                            rspData.Data    = modelInfos;
                            return(Json(rspData));
                        }
                        else
                        {
                            ResponseData <string> rspData = new ResponseData <string>();
                            rspData.Code    = "-1";
                            rspData.Message = $"[ErrorCode:{identifyModelByVINResult.status}] " + identifyModelByVINResult.error_msg;
                            rspData.Success = false;
                            return(Json(rspData));
                        }
                    }
                    catch (Exception ex)
                    {
                        ResponseData <string> rspData = new ResponseData <string>();
                        rspData.Code    = "-1";
                        rspData.Message = ex.Message;
                        rspData.Success = false;
                        return(Json(rspData));
                    }
                }
            }
            else//有查询记录,直接返回查询记录;
            {
                ResponseData <List <Model2> > rspData = new ResponseData <List <Model2> >();
                rspData.Code    = "1";
                rspData.Message = "ok";
                rspData.Success = true;
                rspData.Data    = GetModelInfoByQueryId(queryid);
                return(Json(rspData));
            }
        }