forked from ddrilling/AsbCloudServer
Фикс редактирования скважины
Основная проблема была в том, что после редактирования списка компаний для скважины не сбрасывался кэш. Я добавил вызов метода DropCacheRelationCompanyWell и сделал небольшой рефакторинг метода обновления.
This commit is contained in:
parent
65a7e072d6
commit
16eccb0e33
@ -173,16 +173,24 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
throw new ArgumentInvalidException("Текущее состояние работы скважины указано неправильно.", nameof(dto));
|
throw new ArgumentInvalidException("Текущее состояние работы скважины указано неправильно.", nameof(dto));
|
||||||
|
|
||||||
var oldRelations = (await GetCacheRelationCompanyWellAsync(token))
|
var oldRelations = (await GetCacheRelationCompanyWellAsync(token))
|
||||||
.Where(r => r.IdWell == dto.Id);
|
.Where(r => r.IdWell == dto.Id).ToArray();
|
||||||
|
|
||||||
if (dto.Companies.Count() != oldRelations.Count() ||
|
if (dto.Companies.Count() != oldRelations.Length ||
|
||||||
dto.Companies.Any(c => !oldRelations.Any(oldC => oldC.IdCompany == c.Id)))
|
dto.Companies.Any(c => oldRelations.All(oldC => oldC.IdCompany != c.Id)))
|
||||||
{
|
{
|
||||||
dbContext.RelationCompaniesWells
|
dbContext.RelationCompaniesWells
|
||||||
.RemoveRange(dbContext.RelationCompaniesWells
|
.RemoveRange(dbContext.RelationCompaniesWells
|
||||||
.Where(r => r.IdWell == dto.Id));
|
.Where(r => r.IdWell == dto.Id));
|
||||||
|
|
||||||
|
DropCacheRelationCompanyWell();
|
||||||
|
|
||||||
var newRelations = dto.Companies.Select(c => new RelationCompanyWell { IdWell = dto.Id, IdCompany = c.Id });
|
var newRelations = dto.Companies
|
||||||
|
.Select(c => new RelationCompanyWell
|
||||||
|
{
|
||||||
|
IdWell = dto.Id,
|
||||||
|
IdCompany = c.Id
|
||||||
|
});
|
||||||
|
|
||||||
dbContext.RelationCompaniesWells.AddRange(newRelations);
|
dbContext.RelationCompaniesWells.AddRange(newRelations);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user