/// <summary> /// Removes the record. /// </summary> /// <param name="record">The record.</param> /// <returns>record id.</returns> public int RemoveRecord(FileCabinetRecord record) { if (record is null) { throw new ArgumentNullException(nameof(record), $"{nameof(record)} is null"); } int id = record.Id; long position = this.recordIndexPosition[record.Id]; this.writer.BaseStream.Position = position; this.writer.Write((short)1); this.writer.Flush(); this.recordIndexPosition.Remove(record.Id); if (this.firstNameDictionary.ContainsKey(record.FirstName)) { this.RemoveValueFromDictionary(record.FirstName, this.firstNameDictionary, record); } if (this.lastNameDictionary.ContainsKey(record.LastName)) { this.RemoveValueFromDictionary(record.LastName, this.lastNameDictionary, record); } if (this.dateOfBirthDictionary.ContainsKey(record.DateOfBirth)) { this.RemoveValueFromDictionary(record.DateOfBirth, this.dateOfBirthDictionary, record); } return(id); }
/// <summary> /// RemoveRecord. /// </summary> /// <param name="record">record.</param> /// <returns>record id.</returns> public int RemoveRecord(FileCabinetRecord record) { if (record is null) { throw new ArgumentNullException(nameof(record), $"{nameof(record)} is null"); } int id = record.Id; int position = this.list.FindIndex(x => x.Id == record.Id); this.list.RemoveAt(position); if (this.firstNameDictionary.ContainsKey(record.FirstName)) { this.RemoveValueFromDictionary(record.FirstName, this.firstNameDictionary, record); } if (this.lastNameDictionary.ContainsKey(record.LastName)) { this.RemoveValueFromDictionary(record.LastName, this.lastNameDictionary, record); } if (this.dateOfBirthDictionary.ContainsKey(record.DateOfBirth)) { this.RemoveValueFromDictionary(record.DateOfBirth, this.dateOfBirthDictionary, record); } return(id); }
private FileCabinetRecord FileReader(long pointer) { this.reader.BaseStream.Position = pointer; short reserved = this.reader.ReadInt16(); if (reserved == 1) { return(null); } int id = this.reader.ReadInt32(); string firstName = Encoding.Unicode.GetString(this.reader.ReadBytes(SizeOfStringRecord), 0, SizeOfStringRecord); firstName = firstName.Replace("\0", string.Empty, StringComparison.InvariantCulture); string lastName = Encoding.Unicode.GetString(this.reader.ReadBytes(SizeOfStringRecord), 0, SizeOfStringRecord); lastName = lastName.Replace("\0", string.Empty, StringComparison.InvariantCulture); char gender = BitConverter.ToChar(this.reader.ReadBytes(2), 0); int year = BitConverter.ToInt32(this.reader.ReadBytes(4), 0); int month = BitConverter.ToInt32(this.reader.ReadBytes(4), 0); int day = BitConverter.ToInt32(this.reader.ReadBytes(4), 0); DateTime dateOfBirth = new DateTime(year, month, day); decimal credit = this.reader.ReadDecimal(); short duration = this.reader.ReadInt16(); var fileCabinetRecord = new FileCabinetRecord(id, firstName, lastName, gender, dateOfBirth, credit, duration); return(fileCabinetRecord); }
/// <summary> /// Inserts the specified record. /// </summary> /// <param name="record">The record.</param> public void Insert(FileCabinetRecord record) { var sw = Stopwatch.StartNew(); this.service.Insert(record); sw.Stop(); Console.WriteLine("Insert method execution duration is {0} ticks", sw.ElapsedTicks); }
/// <summary> /// Implements IFileCabinetRecord interface. /// </summary> /// <param name="id">Id of record.</param> /// <param name="parameters">Parameters of record.</param> public void EditRecord(int id, RecordData parameters) { if (id > this.list.Count) { throw new ArgumentException($"Element with #{nameof(id)} can't fine in this records list."); } this.validator.ValidatePararmeters(parameters); var record = new FileCabinetRecord { Id = id, FirstName = parameters.FirstName, LastName = parameters.LastName, DateOfBirth = parameters.DateOfBirth, Experience = parameters.Experience, Balance = parameters.Balance, EnglishLevel = parameters.EnglishLevel, }; this.list[id - 1] = record; if (this.firstNameDictionary.ContainsKey(record.FirstName.ToUpper(CultureInfo.InvariantCulture))) { this.firstNameDictionary[record.FirstName.ToUpper(CultureInfo.InvariantCulture)].Add(record); } else { this.firstNameDictionary.Add(record.FirstName.ToUpper(CultureInfo.InvariantCulture), new List <FileCabinetRecord> { record }); } if (this.lastNameDictionary.ContainsKey(record.LastName.ToUpper(CultureInfo.InvariantCulture))) { this.lastNameDictionary[record.LastName.ToUpper(CultureInfo.InvariantCulture)].Add(record); } else { this.lastNameDictionary.Add(record.LastName.ToUpper(CultureInfo.InvariantCulture), new List <FileCabinetRecord> { record }); } if (this.dateOfBirthDictionary.ContainsKey(record.DateOfBirth)) { this.dateOfBirthDictionary[record.DateOfBirth].Add(record); } else { this.dateOfBirthDictionary.Add(record.DateOfBirth, new List <FileCabinetRecord> { record }); } CashedData.ClearCashe(); }
/// <summary> /// Adds the record. /// </summary> /// <param name="entity">The entity.</param> /// <param name="record">The record.</param> public void AddRecord(ValidateEntity entity, FileCabinetRecord record) { if (!this.memDictioanry.ContainsKey(entity)) { this.memDictioanry.Add(entity, new List <FileCabinetRecord>()); } this.memDictioanry[entity].Add(record); }
/// <summary> /// Write records in csv file. /// </summary> /// <param name="record">Record.</param> public void Write(FileCabinetRecord record) { if (record is null) { throw new ArgumentNullException($"{nameof(record)} cannot be null."); } this.writer.WriteLine(record.ToString(), CultureInfo.InvariantCulture); }
/// <summary> /// Implements IFileCabinetRecord interface. /// </summary> /// <param name="parameters">Parameters of new record.</param> /// <returns>Id of record.</returns> public int CreateRecord(RecordData parameters) { this.validator.ValidatePararmeters(parameters); var record = new FileCabinetRecord { Id = this.list.Count + 1, FirstName = parameters.FirstName, LastName = parameters.LastName, DateOfBirth = parameters.DateOfBirth, Experience = parameters.Experience, Balance = parameters.Balance, EnglishLevel = parameters.EnglishLevel, }; this.list.Add(record); if (this.firstNameDictionary.ContainsKey(record.FirstName.ToUpper(CultureInfo.InvariantCulture))) { this.firstNameDictionary[record.FirstName.ToUpper(CultureInfo.InvariantCulture)].Add(record); } else { this.firstNameDictionary.Add(record.FirstName.ToUpper(CultureInfo.InvariantCulture), new List <FileCabinetRecord> { record }); } if (this.lastNameDictionary.ContainsKey(record.LastName.ToUpper(CultureInfo.InvariantCulture))) { this.lastNameDictionary[record.LastName.ToUpper(CultureInfo.InvariantCulture)].Add(record); } else { this.lastNameDictionary.Add(record.LastName.ToUpper(CultureInfo.InvariantCulture), new List <FileCabinetRecord> { record }); } if (this.dateOfBirthDictionary.ContainsKey(record.DateOfBirth)) { this.dateOfBirthDictionary[record.DateOfBirth].Add(record); } else { this.dateOfBirthDictionary.Add(record.DateOfBirth, new List <FileCabinetRecord> { record }); } return(record.Id); }
/// <summary> /// Inserts the specified record. /// </summary> /// <param name="record">The record.</param> public void Insert(FileCabinetRecord record) { string context = string.Format(CultureInfo.InvariantCulture, "{0} - Calling {1} with record = {2}\n", DateTime.Now, "Insert()", record); File.AppendAllText("logger.txt", context); try { this.service.Insert(record); } catch (Exception e) { File.AppendAllText("logger.txt", e.ToString()); throw; } }
private int GenerateId(FileCabinetRecord fileCabinetRecord) { if (fileCabinetRecord.Id != 0) { return(fileCabinetRecord.Id); } var maxId = 0; if (this.list.Count > 0) { maxId = this.list.Max(x => x.Id); } return(maxId + 1); }
/// <summary> /// Creates the record. /// </summary> /// <param name="record">The file cabinet record.</param> /// <returns>id of created record.</returns> public int CreateRecord(FileCabinetRecord record) { if (record is null) { throw new ArgumentNullException(nameof(record), $"{nameof(record)} is null"); } this.validator.ValidateParameters(record); record.Id = this.GenerateId(record); this.list.Add(record); this.AddValueToDictionary(record.FirstName, this.firstNameDictionary, record); this.AddValueToDictionary(record.LastName, this.lastNameDictionary, record); this.AddValueToDictionary(record.DateOfBirth, this.dateOfBirthDictionary, record); return(record.Id); }
private int GenerateId(FileCabinetRecord fileCabinetRecord) { if (fileCabinetRecord.Id != 0) { return(fileCabinetRecord.Id); } var maxId = 0; if (this.recordIndexPosition.Count > 0) { maxId = this.recordIndexPosition.Keys.Max(x => x); } return(maxId + 1); }
/// <summary> /// Inserts the specified record. /// </summary> /// <param name="record">The record.</param> /// <exception cref="ArgumentNullException">Throws when record is null.</exception> /// <exception cref="ArgumentException">Record id must be more than zero. /// or /// Such identifier already exists.</exception> public void Insert(FileCabinetRecord record) { if (record is null) { throw new ArgumentNullException(nameof(record)); } if (record.Id == -1) { throw new ArgumentException("Record id must be more than zero."); } this.validator.ValidateCabinetRecord(RecordToParams(record)); if (this.dictionaryId.ContainsKey(record.Id)) { throw new ArgumentException("Such identifier already exists."); } else { this.fileStream.Position = this.fileStream.Length; this.dictionaryId.Add(record.Id, this.fileStream.Position); AddToDictionary<string, long>(this.firstNameDictionary, record.FirstName.ToUpperInvariant(), this.fileStream.Position); AddToDictionary<string, long>(this.lastNameDictionary, record.LastName.ToUpperInvariant(), this.fileStream.Position); AddToDictionary<DateTime, long>(this.dateOfBirthDictionary, record.DateOfBirth, this.fileStream.Position); byte[] tempFirstName = Encoding.Default.GetBytes(record.FirstName); byte[] tempLastName = Encoding.Default.GetBytes(record.LastName); byte[] firstName = new byte[120]; byte[] lastName = new byte[120]; ToBytesDecimal toBytesDecimal = new ToBytesDecimal(record.Salary); byte[] bytesSalary = BitConverter.GetBytes(toBytesDecimal.Bytes1).Concat(BitConverter.GetBytes(toBytesDecimal.Bytes2)).ToArray(); Array.Copy(tempFirstName, 0, firstName, 0, tempFirstName.Length); Array.Copy(tempLastName, 0, lastName, 0, tempLastName.Length); this.fileStream.Write(BitConverter.GetBytes(record.Department)); this.fileStream.Write(BitConverter.GetBytes(record.Id)); this.fileStream.Write(firstName); this.fileStream.Write(lastName); this.fileStream.Write(BitConverter.GetBytes(record.DateOfBirth.Year)); this.fileStream.Write(BitConverter.GetBytes(record.DateOfBirth.Month)); this.fileStream.Write(BitConverter.GetBytes(record.DateOfBirth.Day)); this.fileStream.Write(bytesSalary); this.fileStream.Write(BitConverter.GetBytes(record.Class)); this.fileStream.Write(new byte[] { 0 }); } this.id = Math.Max(this.id, record.Id); }
/// <summary> /// Removes the specified identifier. /// </summary> /// <param name="id">The identifier.</param> public void Remove(int id) { long position = this.dictionaryId[id]; byte[] buffer = new byte[277]; this.fileStream.Position = position; this.fileStream.Read(buffer, 0, 277); FileCabinetRecord record = this.RecordFromBytes(buffer); this.dateOfBirthDictionary[record.DateOfBirth].Remove(position); this.firstNameDictionary[record.FirstName.ToUpperInvariant()].Remove(position); this.lastNameDictionary[record.LastName.ToUpperInvariant()].Remove(position); this.dictionaryId.Remove(id); this.fileStream.Position = position + 276; this.fileStream.Write(new byte[] { 1 }); this.deleteStat++; }
/// <inheritdoc/> public IReadOnlyCollection<FileCabinetRecord> GetRecords() { byte[] buffer = new byte[277]; List<FileCabinetRecord> result = new List<FileCabinetRecord>(); this.fileStream.Position = 0; while (this.fileStream.Read(buffer, 0, 277) != 0) { try { FileCabinetRecord record = this.RecordFromBytes(buffer); result.Add(record); } catch (KeyNotFoundException) { } } return result; }
/// <summary> /// Gets the records. /// </summary> /// <returns> /// All records. /// </returns> public ReadOnlyCollection <FileCabinetRecord> GetRecords() { List <FileCabinetRecord> list = new List <FileCabinetRecord>(); this.reader.BaseStream.Position = 0; long position = this.reader.BaseStream.Position; for (int i = 0; i < this.countOfRecords; i++) { FileCabinetRecord record = this.FileReader(position); if (record != null) { list.Add(record); } position += RecordSize; } return(list.AsReadOnly()); }
private FileCabinetRecord RecordFromBytes(byte[] buffer) { ToBytesDecimal toDecimal = default; int year; int month; int day; FileCabinetRecord record = new FileCabinetRecord(); record.Department = BitConverter.ToInt16(buffer, 0); record.Id = BitConverter.ToInt32(buffer, 2); record.FirstName = Encoding.Default.GetString(buffer, 6, 120).Trim('\0'); record.LastName = Encoding.Default.GetString(buffer, 126, 120).Trim('\0'); year = BitConverter.ToInt32(buffer, 246); month = BitConverter.ToInt32(buffer, 250); day = BitConverter.ToInt32(buffer, 254); toDecimal.Bytes1 = BitConverter.ToInt64(buffer, 258); toDecimal.Bytes2 = BitConverter.ToInt64(buffer, 266); record.Salary = toDecimal.GetDecimal(); record.Class = BitConverter.ToChar(buffer, 274); record.DateOfBirth = new DateTime(year, month, day); return buffer[276] == 0 ? record : throw new KeyNotFoundException(); }
private void FileWriter(FileCabinetRecord fileCabinetRecord, long position) { this.writer.BaseStream.Position = position; this.writer.Write((short)0); this.writer.Write(fileCabinetRecord.Id); var buffer = Encoding.Unicode.GetBytes(CreateEmptyString(fileCabinetRecord.FirstName, 60)); this.writer.Write(buffer); buffer = Encoding.Unicode.GetBytes(CreateEmptyString(fileCabinetRecord.LastName, 60)); this.writer.Write(buffer); buffer = Encoding.Unicode.GetBytes(CreateEmptyString(fileCabinetRecord.Gender.ToString(this.culture), 1)); this.writer.Write(buffer); this.writer.Write(fileCabinetRecord.DateOfBirth.Year); this.writer.Write(fileCabinetRecord.DateOfBirth.Month); this.writer.Write(fileCabinetRecord.DateOfBirth.Day); this.writer.Write(fileCabinetRecord.CreditSum); this.writer.Write(fileCabinetRecord.Duration); }
/// <summary> /// Creates the record. /// </summary> /// <param name="record">The file cabinet record.</param> /// <returns> /// Id of created record. /// </returns> public int CreateRecord(FileCabinetRecord record) { if (record is null) { throw new ArgumentNullException(nameof(record), $"{nameof(record)} is null"); } this.validator.ValidateParameters(record); record.Id = this.GenerateId(record); this.countOfRecords++; long position = RecordSize * (this.countOfRecords - 1); this.FileWriter(record, position); this.writer.Flush(); this.recordIndexPosition.Add(record.Id, position); this.AddValueToDictionary(record.FirstName, this.firstNameDictionary, record); this.AddValueToDictionary(record.LastName, this.lastNameDictionary, record); this.AddValueToDictionary(record.DateOfBirth, this.dateOfBirthDictionary, record); return(record.Id); }
/// <summary> /// Purges the deleted records. /// </summary> /// <returns>count of deleted records and count of all records.</returns> public (int, int) PurgeDeletedRecords() { Queue <long> rewriteRecord = new Queue <long>(); this.recordIndexPosition.Clear(); this.writer.BaseStream.Position = 0; this.reader.BaseStream.Position = 0; long readerPosition = 0; long sizeOfFile = 0; int countOfDeletedRecords = 0; while (readerPosition < this.countOfRecords * RecordSize) { rewriteRecord.Enqueue(readerPosition); FileCabinetRecord record = this.FileReader(readerPosition); if (record != null) { long recordPosition = rewriteRecord.Dequeue(); this.FileWriter(record, recordPosition); this.recordIndexPosition.Add(record.Id, recordPosition); sizeOfFile += RecordSize; } else { countOfDeletedRecords++; } readerPosition += RecordSize; } this.fileStream.SetLength(sizeOfFile); int countOfAllRecords = this.countOfRecords; this.countOfRecords -= countOfDeletedRecords; return(countOfDeletedRecords, countOfAllRecords); }
/// <summary> /// Edits the record. /// </summary> /// <param name="fileCabinetRecord">The file cabinet record.</param> public void EditRecord(FileCabinetRecord fileCabinetRecord) { if (fileCabinetRecord is null) { throw new ArgumentNullException(nameof(fileCabinetRecord), $"{nameof(fileCabinetRecord)} is null"); } FileCabinetRecord record = this.list.Find(x => x.Id == fileCabinetRecord.Id); if (record.Id != fileCabinetRecord.Id) { throw new ArgumentException($"{nameof(fileCabinetRecord)} can't update record id.", nameof(fileCabinetRecord)); } if (fileCabinetRecord.FirstName != record.FirstName) { this.RemoveValueFromDictionary(record.FirstName, this.firstNameDictionary, record); this.AddValueToDictionary(fileCabinetRecord.FirstName, this.firstNameDictionary, fileCabinetRecord); } if (fileCabinetRecord.LastName != record.LastName) { this.RemoveValueFromDictionary(record.LastName, this.lastNameDictionary, record); this.AddValueToDictionary(fileCabinetRecord.LastName, this.lastNameDictionary, fileCabinetRecord); } if (fileCabinetRecord.DateOfBirth != record.DateOfBirth) { this.RemoveValueFromDictionary(record.DateOfBirth, this.dateOfBirthDictionary, record); this.AddValueToDictionary(fileCabinetRecord.DateOfBirth, this.dateOfBirthDictionary, fileCabinetRecord); } int position = this.list.FindIndex(x => x.Id == fileCabinetRecord.Id); this.list[position] = fileCabinetRecord; }
private void RemoveValueFromDictionary <T>(T value, Dictionary <T, List <FileCabinetRecord> > dictionary, FileCabinetRecord record) { if (dictionary.ContainsKey(value)) { dictionary[value].Remove(record); } }
/// <summary> /// Edits the record. /// </summary> /// <param name="id">The identifier.</param> /// <param name="recordParams">The record parameters.</param> /// <exception cref="ArgumentNullException">Throws when recordParams is null.</exception> /// <exception cref="KeyNotFoundException">Throws when Id not found.</exception> public void EditRecord(int id, RecordParams recordParams) { if (recordParams is null) { throw new ArgumentNullException($"{nameof(recordParams)} must nit be null"); } this.validator.ValidateCabinetRecord(recordParams); byte[] buffer = new byte[277]; this.fileStream.Position = 0; if (this.dictionaryId.ContainsKey(id)) { long position = this.dictionaryId[id]; this.fileStream.Position = position; this.fileStream.Read(buffer, 0, 277); FileCabinetRecord record = this.RecordFromBytes(buffer); if (record.FirstName.ToUpperInvariant() != recordParams.FirstName.ToUpperInvariant()) { this.firstNameDictionary[record.FirstName.ToUpperInvariant()].Remove(position); AddToDictionary<string, long>(this.firstNameDictionary, recordParams.FirstName.ToUpperInvariant(), position); } if (record.LastName.ToUpperInvariant() != recordParams.LastName.ToUpperInvariant()) { this.lastNameDictionary[record.LastName.ToUpperInvariant()].Remove(position); AddToDictionary<string, long>(this.lastNameDictionary, recordParams.LastName.ToUpperInvariant(), position); } if (record.DateOfBirth != recordParams.DateOfBirth) { this.dateOfBirthDictionary[record.DateOfBirth].Remove(position); AddToDictionary<DateTime, long>(this.dateOfBirthDictionary, recordParams.DateOfBirth, position); } this.fileStream.Position = position; byte[] tempFirstName = Encoding.Default.GetBytes(recordParams.FirstName); byte[] tempLastName = Encoding.Default.GetBytes(recordParams.LastName); byte[] firstName = new byte[120]; byte[] lastName = new byte[120]; ToBytesDecimal toBytesDecimal = new ToBytesDecimal(recordParams.Salary); byte[] bytesSalary = BitConverter.GetBytes(toBytesDecimal.Bytes1).Concat(BitConverter.GetBytes(toBytesDecimal.Bytes2)).ToArray(); Array.Copy(tempFirstName, 0, firstName, 0, tempFirstName.Length); Array.Copy(tempLastName, 0, lastName, 0, tempLastName.Length); this.fileStream.Write(BitConverter.GetBytes(recordParams.Department)); this.fileStream.Write(BitConverter.GetBytes(id)); this.fileStream.Write(firstName); this.fileStream.Write(lastName); this.fileStream.Write(BitConverter.GetBytes(recordParams.DateOfBirth.Year)); this.fileStream.Write(BitConverter.GetBytes(recordParams.DateOfBirth.Month)); this.fileStream.Write(BitConverter.GetBytes(recordParams.DateOfBirth.Day)); this.fileStream.Write(bytesSalary); this.fileStream.Write(BitConverter.GetBytes(recordParams.Class)); this.fileStream.Write(new byte[] { 0 }); this.fileStream.Position = this.fileStream.Length; return; } throw new KeyNotFoundException($"wrong {nameof(id)}"); }
private void AddValueToDictionary <T>(T value, Dictionary <T, List <FileCabinetRecord> > dictionary, FileCabinetRecord record) { if (dictionary.ContainsKey(value)) { dictionary[value].Add(record); } else { dictionary.Add(value, new List <FileCabinetRecord>()); dictionary[value].Add(record); } }
/// <summary> /// Edits the record. /// </summary> /// <param name="fileCabinetRecord">The file cabinet record.</param> public void EditRecord(FileCabinetRecord fileCabinetRecord) { if (fileCabinetRecord is null) { throw new ArgumentNullException(nameof(fileCabinetRecord), $"{nameof(fileCabinetRecord)} is null"); } if (!this.recordIndexPosition.ContainsKey(fileCabinetRecord.Id)) { throw new FileRecordNotFoundException(fileCabinetRecord.Id); } long position = this.recordIndexPosition[fileCabinetRecord.Id]; FileCabinetRecord oldRecord = this.FileReader(position); if (oldRecord.Id != fileCabinetRecord.Id) { throw new ArgumentException($"{nameof(fileCabinetRecord)} can't update record id.", nameof(fileCabinetRecord)); } this.writer.BaseStream.Position = position + sizeof(short) + sizeof(int); if (fileCabinetRecord.FirstName != oldRecord.FirstName) { var buffer = Encoding.Unicode.GetBytes(CreateEmptyString(fileCabinetRecord.FirstName, 60)); this.writer.Write(buffer); this.RemoveValueFromDictionary(oldRecord.FirstName, this.firstNameDictionary, oldRecord); this.AddValueToDictionary(fileCabinetRecord.FirstName, this.firstNameDictionary, fileCabinetRecord); } else { this.writer.BaseStream.Position += SizeOfStringRecord; } if (fileCabinetRecord.LastName != oldRecord.LastName) { var buffer = Encoding.Unicode.GetBytes(CreateEmptyString(fileCabinetRecord.LastName, 60)); this.writer.Write(buffer); this.RemoveValueFromDictionary(oldRecord.LastName, this.lastNameDictionary, oldRecord); this.AddValueToDictionary(fileCabinetRecord.LastName, this.lastNameDictionary, fileCabinetRecord); } else { this.writer.BaseStream.Position += SizeOfStringRecord; } if (fileCabinetRecord.Gender != oldRecord.Gender) { var buffer = Encoding.Unicode.GetBytes(CreateEmptyString(fileCabinetRecord.Gender.ToString(this.culture), 1)); this.writer.Write(buffer); } else { this.writer.BaseStream.Position += sizeof(char); // 2 } if (fileCabinetRecord.DateOfBirth != oldRecord.DateOfBirth) { this.writer.Write(fileCabinetRecord.DateOfBirth.Year); this.writer.Write(fileCabinetRecord.DateOfBirth.Month); this.writer.Write(fileCabinetRecord.DateOfBirth.Day); this.RemoveValueFromDictionary(oldRecord.DateOfBirth, this.dateOfBirthDictionary, oldRecord); this.AddValueToDictionary(fileCabinetRecord.DateOfBirth, this.dateOfBirthDictionary, fileCabinetRecord); } else { this.writer.BaseStream.Position += sizeof(int) * 3; // 12 } if (fileCabinetRecord.CreditSum != oldRecord.CreditSum) { this.writer.Write(fileCabinetRecord.CreditSum); } else { this.writer.BaseStream.Position += sizeof(decimal); // 16 } if (fileCabinetRecord.Duration != oldRecord.Duration) { this.writer.Write(fileCabinetRecord.Duration); } this.writer.Flush(); }
private static RecordParams RecordToParams(FileCabinetRecord record) { return new RecordParams(record.FirstName, record.LastName, record.DateOfBirth, record.Department, record.Salary, record.Class); }