public void SetLeRequestDeparture(string leNo, string placeName) { using var db = _dbContextFactory.GetDbContext(); var entry = db.Destination.GetByName(placeName); NullCheck(entry, typeof(Destination), placeName); if (!db.Le.Any(l => l.LeNo == leNo)) { throw new InvalidOperationException($"LE {leNo} does not exist."); } // only check for regular LE; NoRead can be set in any entry if (leNo != ConstantsCommon.ConstantsLE.NoRead) { db.Destination.GetByLeNo(leNo).ForEach(d => { if (d.Name == placeName) { if (d.Status != DestinationStatus.LeArrived) { Log.Write(LogLevel.Error, $"{nameof(Le)} {leNo} is set for {nameof(Destination)} {placeName}. But {nameof(Destination.Status)} is {d.Status}."); } } else { Log.Write(LogLevel.Error, $"{nameof(Le)} {leNo} is already set for {nameof(Destination)} {placeName}. {nameof(Destination.Status)} is {d.Status}. Will be deleted from {nameof(Destination)} entry"); d.SetLeDeparted(); } }); } db.Destination.GetByName(placeName)?.SetLeRequestDeparture(leNo); db.SaveChanges(); }