public async Task <Data.Vessel> AddOrUpdateVesselAsync(VesselViewModel model) { if (model == null) { throw new NullReferenceException("VesselViewModel is null"); } Data.Vessel entity = null; var existing = new List <Data.Vessel>(); // няма търсене по уникален номер на кораб в Regix //string identifier = model.RegistrationData != null ? model.RegistrationData.RegistrationNumber : ""; //var existing = await _context.Vessel // .Include(x => x.VesselEngine) // .Include(x => x.VesselOwner) // .Include(x => x.VesselRegistrationData) // .Include(x => x.VesselRegistrationData).ThenInclude(x => x.StatusNavigation) // .Where(x => x.VesselRegistrationData.Any() && // x.VesselRegistrationData.Where(a => a.RegistrationNumber.ToLower() == identifier.ToLower()).Any() && // x.VesselExtension != null && // x.VesselExtension.Deactivated == false) // .ToListAsync(); if (!existing.Any()) { entity = model.ToEntity(); entity.Id = 0; entity.VesselExtension.VesselId = entity.Id; await _context.Vessel.AddAsync(entity); } else { foreach (Data.Vessel item in existing) { item.VesselExtension.Deactivated = true; _context.VesselEngine.RemoveRange(item.VesselEngine); _context.VesselOwner.RemoveRange(item.VesselOwner); _context.VesselRegistrationData.RemoveRange(item.VesselRegistrationData); } existing[0].UpdateEntity(model); existing[0].VesselExtension.Deactivated = false; existing[0].VesselExtension.UpdatedAt = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc); existing[0].VesselExtension.RequestId = model.ExtensionRequestId; _context.Vessel.Update(existing[0]); entity = existing[0]; } await _context.SaveChangesAsync(); return(entity); }
public static void UpdateEntity(this Data.Vessel entity, VesselViewModel model) { if (model == null || entity == null) { return; } entity.Id = model.Id; entity.Bt = model.Bt; entity.Nt = model.Nt; entity.MaxLength = model.MaxLength; entity.LengthBetweenPerpendiculars = model.LengthBetweenPerpendiculars; entity.MaxWidth = model.MaxWidth; entity.Waterplane = model.Waterplane; entity.ShipboardHeight = model.ShipboardHeight; entity.Deadweight = model.Deadweight; entity.NumberOfEngines = model.NumberOfEngines; entity.EnginesFuel = model.EnginesFuel; entity.SumEnginePower = model.SumEnginePower; entity.BodyNumber = model.BodyNumber; entity.VesselEngine = new List <VesselEngine>(); if (model.Engines != null && model.Engines.Any()) { entity.VesselEngine = model.Engines .Select(x => x.ToEntity()).ToList(); } entity.VesselOwner = new List <VesselOwner>(); if (model.Owners != null && model.Owners.Any()) { entity.VesselOwner = model.Owners .Select(x => x.ToEntity()).ToList(); } entity.VesselRegistrationData = new List <VesselRegistrationData>(); if (model.RegistrationData != null) { entity.VesselRegistrationData.Add(model.RegistrationData.ToEntity()); } return; }