public async Task <OperationResult> ImportFraction([FromBody] FractionImportModel fractionImportModel)
 {
     return(await _fractionService.ImportFraction(fractionImportModel));
 }
예제 #2
0
        public async Task <OperationResult> ImportFraction(FractionImportModel fractionsAsJson)
        {
            try
            {
                {
                    var rawJson        = JToken.Parse(fractionsAsJson.ImportList);
                    var rawHeadersJson = JToken.Parse(fractionsAsJson.Headers);

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

                    foreach (var fractionObj in fractionObjects)
                    {
                        var numberExists       = int.TryParse(headers[0]?["headerValue"]?.ToString(), out var numberColumn);
                        var fractionNameExists = int.TryParse(headers[1]?["headerValue"]?.ToString(),
                                                              out var nameColumn);
                        if (numberExists || fractionNameExists)
                        {
                            var existingFraction = FindFraction(numberExists, numberColumn, fractionNameExists,
                                                                nameColumn, headers, fractionObj);
                            if (existingFraction == null)
                            {
                                var fractionModel =
                                    FractionsHelper.ComposeValues(new FractionModel(), headers, fractionObj);

                                var newFraction = new Fraction
                                {
                                    ItemNumber   = fractionModel.ItemNumber,
                                    Name         = fractionModel.Name,
                                    Description  = fractionModel.Description,
                                    LocationCode = fractionModel.LocationCode,
                                    eFormId      = fractionModel.eFormId
                                };
                                await newFraction.Create(_dbContext);
                            }
                            else
                            {
                                if (existingFraction.WorkflowState == Constants.WorkflowStates.Removed)
                                {
                                    var fraction = await _dbContext.Fractions.SingleOrDefaultAsync(x => x.Id == existingFraction.Id);

                                    if (fraction != null)
                                    {
                                        fraction.Name          = existingFraction.Name;
                                        fraction.Description   = existingFraction.Description;
                                        fraction.ItemNumber    = existingFraction.ItemNumber;
                                        fraction.LocationCode  = existingFraction.LocationCode;
                                        fraction.WorkflowState = Constants.WorkflowStates.Created;

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