public async Task <IActionResult> AddProduction(
            PrototypeProductionResourceParameter parameter
            )
        {
            try
            {
                var data = await _service.AddOrUpdateProduction(parameter).ConfigureAwait(false);

                return(Ok(data));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
        public async Task <dynamic> AddOrUpdateProduction(
            PrototypeProductionResourceParameter parameter
            )
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            var record = await _context.Productions
                         .AsNoTracking()
                         .Where(x => x.ShiftReportId == parameter.ShiftReportId)
                         .Where(x => x.Part == parameter.Part)
                         .FirstOrDefaultAsync()
                         .ConfigureAwait(false);

            await using var transaction = await _context.Database
                                          .BeginTransactionAsync()
                                          .ConfigureAwait(false);

            try
            {
                var entity = new Production
                {
                    ShiftReportId = parameter.ShiftReportId,
                    Qty           = parameter.Qty,
                    Timestamp     = DateTime.Now,
                    Part          = parameter.Part,
                    ProductionId  = record?.ProductionId ?? 0,
                    SampleOrder   = parameter.SampleOrder
                };

                _context.Productions.Update(entity);
                await transaction.CommitAsync().ConfigureAwait(false);

                await _context.SaveChangesAsync().ConfigureAwait(false);

                return(entity);
            }
            catch (Exception e)
            {
                await transaction.RollbackAsync().ConfigureAwait(false);

                throw new Exception(e.Message);
            }
        }