public async Task <OperationResult> ImportProducer([FromBody] ProducerImportModel producerImportModel)
 {
     return(await _producerService.ImportProducer(producerImportModel));
 }
        public async Task <OperationResult> ImportProducer(ProducerImportModel producersAsJson)
        {
            try
            {
                {
                    var rawJson        = JRaw.Parse(producersAsJson.ImportList);
                    var rawHeadersJson = JRaw.Parse(producersAsJson.Headers);

                    var headers         = rawHeadersJson;
                    var fractionObjects = rawJson.Skip(1);

                    foreach (var fractionObj in fractionObjects)
                    {
                        var producerNameExists = int.TryParse(headers[0]["headerValue"].ToString(), out var nameColumn);
                        if (!producerNameExists)
                        {
                            continue;
                        }
                        var existingProducer = FindProducer(nameColumn, headers, fractionObj);
                        if (existingProducer == null)
                        {
                            var producerModel =
                                ProducersHelper.ComposeValues(new ProducerModel(), headers, fractionObj);

                            var newProducer = new Producer
                            {
                                Name          = producerModel.Name,
                                Description   = producerModel.Description,
                                ForeignId     = producerModel.ForeignId,
                                Address       = producerModel.Address,
                                City          = producerModel.City,
                                ZipCode       = producerModel.ZipCode,
                                Phone         = producerModel.Phone,
                                ContactPerson = producerModel.ContactPerson
                            };
                            await newProducer.Create(_dbContext);
                        }
                        else
                        {
                            var producerModel =
                                ProducersHelper.ComposeValues(new ProducerModel(), headers, fractionObj);
                            existingProducer.Name          = producerModel.Name;
                            existingProducer.Description   = producerModel.Description;
                            existingProducer.ForeignId     = producerModel.ForeignId;
                            existingProducer.Address       = producerModel.Address;
                            existingProducer.City          = producerModel.City;
                            existingProducer.ZipCode       = producerModel.ZipCode;
                            existingProducer.Phone         = producerModel.Phone;
                            existingProducer.ContactPerson = producerModel.ContactPerson;

                            if (existingProducer.WorkflowState == Constants.WorkflowStates.Removed)
                            {
                                existingProducer.WorkflowState = Constants.WorkflowStates.Created;
                            }

                            await existingProducer.Update(_dbContext);
                        }
                    }
                }
                return(new OperationResult(true,
                                           _trashInspectionLocalizationService.GetString("ProducerCreated")));
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _coreHelper.LogException(e.Message);
                return(new OperationResult(false,
                                           _trashInspectionLocalizationService.GetString("ErrorWhileCreatingProducer")));
            }
        }