public async Task <ActionResult <ProcedureRecord> > PostProcedureRecord(ProcedureRecord procedureRecord) { procedureRecord.ToothRecord = _context.ToothRecords.First(t => t.Tooth.Localization == procedureRecord.ToothRecord.Tooth.Localization && t.Patient.Id == procedureRecord.Encounter.Patient.Id); procedureRecord.Encounter = _context.Encounter.Find(procedureRecord.Encounter.Id); procedureRecord.Procedure = _context.Procedures.Find(procedureRecord.Procedure.Id); _context.ProcedureRecords.Add(procedureRecord); await _context.SaveChangesAsync(); return(await _context.ProcedureRecords .Include(pr => pr.ToothRecord).ThenInclude(t => t.Tooth) .FirstOrDefaultAsync(d => d.Id == procedureRecord.Id)); }
/// <summary> /// Reads type record for the specified type index. /// </summary> /// <param name="typeIndex">Type record index in <see cref="references"/> list.</param> /// <returns></returns> private TypeRecord ReadType(int typeIndex) { IBinaryReader reader = typeRecordsSubStreamPerThread.Value; RecordReference reference = references[typeIndex]; TypeRecord typeRecord; long dataEnd = reference.DataOffset + reference.DataLen; reader.Position = reference.DataOffset; switch (reference.Kind) { case TypeLeafKind.LF_MODIFIER: typeRecord = ModifierRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_PROCEDURE: typeRecord = ProcedureRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_MFUNCTION: typeRecord = MemberFunctionRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_LABEL: typeRecord = LabelRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_MFUNC_ID: typeRecord = MemberFunctionIdRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_ARGLIST: typeRecord = ArgumentListRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_SUBSTR_LIST: typeRecord = StringListRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_POINTER: typeRecord = PointerRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_NESTTYPE: typeRecord = NestedTypeRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_FIELDLIST: typeRecord = FieldListRecord.Read(reader, reference.Kind, reference.DataLen); break; case TypeLeafKind.LF_ENUM: typeRecord = EnumRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_CLASS: case TypeLeafKind.LF_STRUCTURE: case TypeLeafKind.LF_INTERFACE: typeRecord = ClassRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_ARRAY: typeRecord = ArrayRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_BITFIELD: typeRecord = BitFieldRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_METHODLIST: typeRecord = MethodOverloadListRecord.Read(reader, reference.Kind, reference.DataLen); break; case TypeLeafKind.LF_UNION: typeRecord = UnionRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_VTSHAPE: typeRecord = VirtualFunctionTableShapeRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_UDT_MOD_SRC_LINE: typeRecord = UdtModuleSourceLineRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_STRING_ID: typeRecord = StringIdRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_BUILDINFO: typeRecord = BuildInfoRecord.Read(reader, reference.Kind); break; case TypeLeafKind.LF_FUNC_ID: typeRecord = FunctionIdRecord.Read(reader, reference.Kind); break; default: #if DEBUG throw new NotImplementedException($"Unknown reference kind: {reference.Kind}"); #else return(null); #endif } if (reader.Position + 4 < dataEnd || reader.Position > dataEnd) { throw new Exception("Parsing went wrong"); } return(typeRecord); }
/// <summary> /// Initializes data based on the <see cref="ProcedureRecord"/>. /// </summary> private void Initialize(ProcedureRecord record) { Tag = Engine.CodeTypeTag.Function; BasicType = DIA.BasicType.NoType; }
/// <summary> /// Initializes a new instance of the <see cref="PdbFunctionType"/> class. /// </summary> /// <param name="pdb">The PDB file reader.</param> /// <param name="typeIndex">Type index.</param> /// <param name="procedureRecord">The procedure record.</param> /// <param name="modifierOptions">The modifier options.</param> internal PdbFunctionType(PdbFileReader pdb, TypeIndex typeIndex, ProcedureRecord procedureRecord, ModifierOptions modifierOptions) : base(pdb, typeIndex, modifierOptions, string.Empty, 0) { ProcedureRecord = procedureRecord; argumentsCache = SimpleCache.CreateWithContext(this, CallEnumerateArguments); }
public async Task <ActionResult <ProcedureRecord> > PutProcedureRecord(int id, ProcedureRecord procedureRecord) { if (id != procedureRecord.Id) { return(BadRequest()); } _context.Entry(procedureRecord).State = EntityState.Modified; try { procedureRecord.ToothRecord = _context.ToothRecords.First(t => t.Id == procedureRecord.ToothRecord.Id); procedureRecord.Procedure = _context.Procedures.Find(procedureRecord.Procedure.Id); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ProcedureRecordExists(id)) { return(NotFound()); } else { throw; } } return(procedureRecord); }