Ejemplo n.º 1
0
        /// <summary>
        /// Process
        /// </summary>
        /// <param name="commerceContext">commerceContext</param>
        /// <returns>true if the process was successful</returns>
        public async Task <CommerceCommand> Process(CommerceContext commerceContext, ImportEntitiesArgument args)
        {
            using (var activity = CommandActivity.Start(commerceContext, this))
            {
                var result = await this._pipeline.Run(args, new CommercePipelineExecutionContextOptions(commerceContext));

                return(this);
            }
        }
        public async Task <IActionResult> ImportEntities([FromBody] ODataActionParameters request)
        {
            if (!this.ModelState.IsValid || request == null)
            {
                return((IActionResult) new BadRequestObjectResult(this.ModelState));
            }
            if (!request.ContainsKey("importFile") || request["importFile"] == null)
            {
                return((IActionResult) new BadRequestObjectResult((object)request));
            }

            IFormFile    formFile     = (IFormFile)request["importFile"];
            MemoryStream memoryStream = new MemoryStream();

            formFile.CopyTo((Stream)memoryStream);
            FormFile file = new FormFile((Stream)memoryStream, 0L, formFile.Length, formFile.Name, formFile.FileName);

            try
            {
                InitializeEnvironment();

                var sb = new StringBuilder();
                using (var reader = new StreamReader(file.OpenReadStream()))
                {
                    while (reader.Peek() >= 0)
                    {
                        sb.AppendLine(reader.ReadLine());
                    }
                }
                var jsonString = sb.ToString();
                var entities   = JsonConvert.DeserializeObject <EntityCollectionModel>(jsonString, new JsonSerializerSettings {
                    TypeNameHandling = TypeNameHandling.All
                });
                var importEntitiesArgument = new ImportEntitiesArgument(entities);

                var command = this.Command <ImportCommerceEntitiesCommand>();
                var result  = await command.Process(this.CurrentContext, importEntitiesArgument);

                return((IActionResult) new ObjectResult((object)this.ExecuteLongRunningCommand(() => command.Process(this.CurrentContext, importEntitiesArgument))));
            }
            catch (Exception ex)
            {
                return(new ObjectResult(ex));
            }
        }