public IResult UpdateProductionBatchResults(IUpdateProductionBatchResultsParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            var parsedParameters = parameters.ToParsedParameters();

            if (!parsedParameters.Success)
            {
                return(parsedParameters);
            }

            var updateResult = new ProductionBatchResultsConductor(_productionUnitOfWork).Update(_timeStamper.CurrentTimeStamp, parsedParameters.ResultingObject);

            if (!updateResult.Success)
            {
                return(updateResult);
            }

            _productionUnitOfWork.Commit();

            return(SyncParameters.Using(new SuccessResult(), parsedParameters.ResultingObject.LotKey));
        }
        public IResult <string> CreateProductionBatchResults(ICreateProductionBatchResultsParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            var parametersResult = parameters.ToParsedParameters();

            if (!parametersResult.Success)
            {
                return(parametersResult.ConvertTo <string>());
            }

            var createResult = new ProductionBatchResultsConductor(_productionUnitOfWork).Create(_timeStamper.CurrentTimeStamp, parametersResult.ResultingObject);

            if (!createResult.Success)
            {
                return(createResult.ConvertTo <string>());
            }

            _productionUnitOfWork.Commit();

            return(SyncParameters.Using(new SuccessResult <string>(parametersResult.ResultingObject.LotKey), parametersResult.ResultingObject.LotKey));
        }