public async Task <ActionResult <esfDailyFuel> > PostesfDailyFuel(DailyFuelViewModel DailyFuel) { using (var transaction = _context.Database.BeginTransaction()) { esfDailyFuel doc = null; try { doc = new esfDailyFuel { dcNo = DailyFuel.dcNo, dcType = DailyFuel.dcType, dcDate = DailyFuel.dcDate, emID = DailyFuel.emID, Comment = DailyFuel.Comment, CreateAt = DateTime.Now, CreateBy = 0 }; _context.esfDailyFuel.Add(doc); await _context.SaveChangesAsync(); var items = DailyFuel.Items .Select(i => new esfDailyFuelItems { HIID = null, dfiID = 0, dcID = doc.dcID, Income = i.Income, Outcome = i.Outcome, Remains = i.Remains, FileName = i.FileName, eoID = i.eoID, fuID = i.fuID, CreateAt = DateTime.Now, CreateBy = 0, }).ToList(); _context.esfDailyFuelItems.AddRange(items); await _context.SaveChangesAsync(); transaction.Commit(); } catch (Exception) { transaction.Rollback(); } return(CreatedAtAction("GetesfDailyFuel", new { id = doc.dcID }, DailyFuel)); } }
public async Task <IActionResult> PutesfDailyFuel(int dcID, DailyFuelViewModel DailyFuel) { if (dcID != DailyFuel.dcID) { return(BadRequest()); } esfDailyFuel doc = await _context.esfDailyFuel.Include(d => d.Items).FirstOrDefaultAsync(d => d.dcID == dcID); using (var transaction = _context.Database.BeginTransaction()) { try { doc.dcNo = DailyFuel.dcNo; doc.dcDate = DailyFuel.dcDate; doc.emID = DailyFuel.emID; doc.Comment = DailyFuel.Comment; doc.Items.RemoveAll(item => !DailyFuel.Items.Any(i => i.dfiID == item.dfiID)); foreach (var updItem in DailyFuel.Items) { var item = doc.Items.FirstOrDefault(i => (updItem.dfiID == i.dfiID)); if (item == null) { item = new esfDailyFuelItems { HIID = null, dfiID = 0, dcID = doc.dcID, Income = updItem.Income, Outcome = updItem.Outcome, Remains = updItem.Remains, FileName = updItem.FileName, eoID = updItem.eoID, fuID = updItem.fuID, CreateAt = DateTime.Now, CreateBy = 0, }; doc.Items.Add(item); } else { if (((updItem.eoID != item.eoID) || (updItem.FileName != item.FileName) || (updItem.fuID != item.fuID) || (updItem.Income != item.Income) || (updItem.Outcome != item.Outcome) || (updItem.Remains != item.Remains))) { item.eoID = updItem.eoID; item.fuID = updItem.fuID; item.FileName = updItem.FileName; item.Income = updItem.Income; item.Outcome = updItem.Outcome; item.Remains = updItem.Remains; item.EditAt = DateTime.Now; } } } _context.Entry(doc).State = EntityState.Modified; try { await _context.SaveChangesAsync(); transaction.Commit(); } catch (DbUpdateConcurrencyException) { if (!esfDailyFuelExists(dcID)) { return(NotFound()); } else { throw; } } } catch (Exception) { transaction.Rollback(); } } return(NoContent()); }