public IActionResult Activate(string id, [FromBody] PrcActivateSettings prcActivateSettings) { //SERVICE VALIDATION var service = serviceQuery.Get(id); if (service == null) { return(new HttpStatusCodeWithErrorResult(StatusCodes.Status404NotFound, ServiceResources.InvalidIdNotExistingService)); } if (service.Type != (int)ServiceTypeEnum.Prc) { return(new HttpStatusCodeWithErrorResult(StatusCodes.Status400BadRequest, string.Format(ServiceResources.InvalidServiceTypeOnly_0_ServicesAreValidForThisRequest, "Prc"))); } if (service.Status != (int)ServiceStatusEnum.Prepared) { return(new HttpStatusCodeWithErrorResult(StatusCodes.Status400BadRequest, ServiceResources.InvalidStatusOnlyTheServicesWithPreparedStatusCanBeActivated)); } var prcSettings = serviceQuery.GetSettings <PrcSettingsElastic>(service.Id); if (prcActivateSettings == null) { if (prcSettings.FieldsForRecommendation == null) { return(new HttpStatusCodeWithErrorResult(StatusCodes.Status400BadRequest, ServiceResources.EmptyActivateSettings)); } } else { if (prcActivateSettings?.FieldsForRecommendation?.Any() == true) { var fields = prcActivateSettings.FieldsForRecommendation.Intersect(GlobalStore.DataSets.Get(prcSettings.DataSetName).DataSet.InterpretedFields).ToList(); if (fields.Count != prcActivateSettings.FieldsForRecommendation.Count) { return(new HttpStatusCodeWithErrorResult(StatusCodes.Status400BadRequest, string.Format(ServiceResources.TheFollowingFieldsNotExistInTheSampleDocument_0, string.Join(", ", fields)))); } prcSettings.FieldsForRecommendation = prcActivateSettings.FieldsForRecommendation; } else { prcSettings.FieldsForRecommendation = GlobalStore.DataSets.Get(prcSettings.DataSetName).DataSet.InterpretedFields; } } var process = processHandler.Create( ProcessTypeEnum.PrcActivate, service.Id, prcSettings, string.Format(ServiceResources.Activating_0_Service_1, ServiceTypeEnum.Prc, service.Name)); service.ProcessIdList.Add(process.Id); serviceQuery.Update(service.Id, service); serviceQuery.IndexSettings(prcSettings); processHandler.Start(process, (tokenSource) => prcHandler.Activate(process.Id, prcSettings, tokenSource.Token)); return(new HttpStatusCodeWithObjectResult(StatusCodes.Status202Accepted, process.ToProcessModel())); }
public async Task <ClientResponseWithObject <Process> > ActivateServiceAsync(string serviceId, PrcActivateSettings prcActivateSettings) { return(await _client.SendAsync <Process>(HttpMethod.Post, prcActivateSettings, $"{serviceId}/{ActivateEndpointSuffix}", null, null)); }
public IActionResult Get(string id) { var service = serviceQuery.Get(id); if (service == null) { return(new StatusCodeResult(StatusCodes.Status404NotFound)); } if (service.Type != (int)ServiceTypeEnum.Prc) { return(new HttpStatusCodeWithErrorResult(StatusCodes.Status400BadRequest, string.Format(ServiceResources.InvalidServiceTypeOnly_0_ServicesAreValidForThisRequest, "Prc"))); } PrcActivateSettings activateSettings = null; PrcPrepareSettings prepareSettings = null; PrcIndexSettings indexSettings = null; var prcSettingsElastic = serviceQuery.GetSettings <PrcSettingsElastic>(service.Id); if (prcSettingsElastic != null) { if (service.Status == (int)ServiceStatusEnum.Prepared || service.Status == (int)ServiceStatusEnum.Active) { prepareSettings = new PrcPrepareSettings { DataSetName = GlobalStore.DataSets.Get(prcSettingsElastic.DataSetName).AliasName, TagIdList = prcSettingsElastic.Tags.Select(t => t.Id).ToList(), CompressSettings = CompressHelper.ToCompressSettings(prcSettingsElastic.CompressSettings), CompressLevel = CompressHelper.ToCompressLevel(prcSettingsElastic.CompressSettings) }; if (service.Status == (int)ServiceStatusEnum.Active) { activateSettings = new PrcActivateSettings { FieldsForRecommendation = prcSettingsElastic.FieldsForRecommendation }; if (prcSettingsElastic?.IndexSettings?.IndexDate != null) { indexSettings = new PrcIndexSettings() { Filter = new Filter() { Query = prcSettingsElastic.IndexSettings.FilterQuery, TagIdList = prcSettingsElastic.IndexSettings.FilterTagIdList } }; } } } } var respService = service.ToServiceModel <PrcService>(); respService.ActualProcessId = service.ProcessIdList.FirstOrDefault(pid => GlobalStore.Processes.IsExist(pid)); respService.ActivateSettings = activateSettings; respService.PrepareSettings = prepareSettings; respService.IndexSettings = indexSettings; return(new OkObjectResult(respService)); }