diff --git a/AsbCloudApp/Services/IWellContactService.cs b/AsbCloudApp/Services/IWellContactService.cs index a584fad7..266da573 100644 --- a/AsbCloudApp/Services/IWellContactService.cs +++ b/AsbCloudApp/Services/IWellContactService.cs @@ -62,11 +62,11 @@ namespace AsbCloudApp.Services Task DeleteAsync(int idWell, int id, CancellationToken token); /// - /// Перенос контактов из скважины на скважину + /// Скопировать контакты в другую скважину /// - /// ключ текущей скважины - /// ключ новой скважины - /// ключи контактов + /// ключ скважины, откуда копировать контакты + /// ключ скважины, куда копировать контакты + /// /// /// Task CopyAsync(int idWell, int idWellTarget, IEnumerable contactIds, CancellationToken token); diff --git a/AsbCloudInfrastructure/Services/WellContactService.cs b/AsbCloudInfrastructure/Services/WellContactService.cs index 7e628e9e..1bb45b77 100644 --- a/AsbCloudInfrastructure/Services/WellContactService.cs +++ b/AsbCloudInfrastructure/Services/WellContactService.cs @@ -92,17 +92,20 @@ namespace AsbCloudInfrastructure.Services public async Task CopyAsync(int idWell, int idWellTarget, IEnumerable contactIds, CancellationToken token) { - var newContacts = await GetContacts(idWell, contactIds, token); - if (!newContacts.Any()) - throw new ForbidException("contacts not found"); + var contacts = await GetContacts(idWell, contactIds, token); + if (!contacts.Any()) + return 0; - foreach (var newContact in newContacts) + var newContacts = contacts.Select(contact => { + var newContact = contact.Adapt(); newContact.IdWell = idWellTarget; newContact.Id = default; - } - await db.Contacts.AddRangeAsync(newContacts); + return newContact; + }); + + db.Contacts.AddRange(newContacts); return await db.SaveChangesAsync(token); }