public async Task DeleteAsync(Guid id) { using (var db = _dbFactory.Create(PersonalFilePermissions.EditOperation)) { var entity = await db.Set <MaterialStimulation>() .Where(x => x.ID == id && !x.RecordDeleted.HasValue) .SingleOrDefaultAsync() .ConfigureAwait(false); if (entity == null) { throw EntityNotFoundFault.Create(id, typeof(MaterialStimulation)); } entity.RecordDeleted = DateTime.Now; entity.RecordDeletedByUserID = _user.Id; await db.SaveChangesAsync().ConfigureAwait(false); } }
public async Task <MaterialStimulationDto> SaveAsync(MaterialStimulationDto dto) { if (dto == null) { throw new ArgumentNullException(nameof(dto)); } using (var db = _dbFactory.Create(PersonalFilePermissions.EditOperation)) { var personalFile = db.Set <PersonalFile>().SingleOrDefault(x => x.ID == dto.PersonalFileId); MaterialStimulation entity; if (dto.ID == Guid.Empty) { entity = new MaterialStimulation { ID = Guid.NewGuid(), RecordCreatedByUserID = _user.Id, PersonalFileId = dto.PersonalFileId, OrganizationId = personalFile.OrganizationId, }; db.Set <MaterialStimulation>().Add(entity); } else { entity = await db.Set <MaterialStimulation>() .Include(x => x.OrderHead) .SingleOrDefaultAsync(x => x.ID == dto.ID && !x.RecordDeleted.HasValue); if (entity == null) { throw EntityNotFoundFault.Create(dto.ID, typeof(MaterialStimulation)); } entity.RecordLastModifiedByUserID = _user.Id; entity.RecordLastModified = DateTime.Now; } if (entity.OrderHead == null) { entity.OrderHead = new OrderHead(); entity.RecordCreatedByUserID = _user.Id; entity.OrderHead.OrderDate = dto.OrderDate; entity.OrderHead.OrderNumber = dto.OrderNumber; entity.OrderHead.OrganizationId = personalFile.OrganizationId; } else if (entity.OrderHead.OrderDate != dto.OrderDate || entity.OrderHead.OrderNumber != dto.OrderNumber) { entity.OrderHead.OrderDate = dto.OrderDate; entity.OrderHead.OrderNumber = dto.OrderNumber; entity.OrderHead.RecordLastModified = DateTime.Now; entity.OrderHead.RecordLastModifiedByUserID = _user.Id; } var binder = _binderFactory.Create <MaterialStimulation, MaterialStimulationDto>(db); entity = binder.BindFrom(entity, dto); await db.SaveChangesAsync(); dto.ID = entity.ID; return(dto); } }