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); } }