/// <summary> /// Method creates new record. /// </summary> /// <param name="param">Instance that describe all information of record.</param> /// <returns>Identification number of record.</returns> public int CreateRecord(ObjectParametrsForCreateAndEditRecord param) { if (!this.validator.ValidatePatameters(param)) { return(0); } var record = new FileCabinetRecord { Id = this.list.Count + 1, FirstName = param.FirstName, LastName = param.LastName, DateOfBirth = param.DateOfBirth, SuccsesfullDeals = param.SuccsesfullDeals, AdditionCoefficient = param.AdditionCoefficient, ManagerClass = param.ManagerClass, }; this.list.Add(record); if (this.firstNameDictionary.ContainsKey(record.FirstName.ToUpper(CultureInfo.CurrentCulture))) { this.firstNameDictionary[record.FirstName.ToUpper(CultureInfo.CurrentCulture)] = this.list.Where <FileCabinetRecord>(t => t.FirstName == record.FirstName).ToList(); } else { this.firstNameDictionary.Add(record.FirstName.ToUpper(CultureInfo.CurrentCulture), this.list.Where <FileCabinetRecord>(t => t.FirstName == record.FirstName).ToList()); } if (this.lastNameDictionary.ContainsKey(record.LastName.ToUpper(CultureInfo.CurrentCulture))) { this.lastNameDictionary[record.LastName.ToUpper(CultureInfo.CurrentCulture)] = this.list.Where <FileCabinetRecord>(t => t.LastName == record.LastName).ToList(); } else { this.lastNameDictionary.Add(record.LastName.ToUpper(CultureInfo.CurrentCulture), this.list.Where <FileCabinetRecord>(t => t.LastName == record.LastName).ToList()); } if (this.dateOfBirthNameDictionary.ContainsKey(record.DateOfBirth)) { this.dateOfBirthNameDictionary[record.DateOfBirth] = this.list.Where <FileCabinetRecord>(t => t.DateOfBirth == record.DateOfBirth).ToList(); } else { this.dateOfBirthNameDictionary.Add(record.DateOfBirth, this.list.Where <FileCabinetRecord>(t => t.DateOfBirth == record.DateOfBirth).ToList()); } return(record.Id); }
/// <summary> /// Method implements custom validation. /// </summary> /// <param name="param">Instance that describe all information of record.</param> /// <returns>Return true if validation is okey or false with ArgumentExeption if validation is not okey.</returns> public bool ValidatePatameters(ObjectParametrsForCreateAndEditRecord param) { if (param.FirstName == null || param.FirstName.Length < 2 || param.FirstName.Length > 40 || param.FirstName.Contains(' ', StringComparison.CurrentCulture)) { return(false); throw new ArgumentException("parametr \"firstName\" is not correct."); } if (param.LastName == null || param.LastName.Length < 2 || param.LastName.Length > 40 || param.LastName.Contains(' ', StringComparison.CurrentCulture)) { return(false); throw new ArgumentException("parametr \"lastName\" is not correct."); } if (param.DateOfBirth == null || param.DateOfBirth < new DateTime(1940, 1, 1) || param.DateOfBirth >= DateTime.Now) { return(false); throw new ArgumentException("parametr \"dateOfBirth\" is not correct."); } if (param.SuccsesfullDeals <= 0) { return(false); throw new ArgumentException("parametr \"succsesfullDeals\" is not correct."); } if (param.AdditionCoefficient <= 0) { return(false); throw new ArgumentException("parametr \"additionCoefficient\" is not correct."); } if (!char.IsLetter(param.ManagerClass)) { return(false); throw new ArgumentException("parametr \"manegerClass\" is not correct."); } return(true); }
/// <summary> /// Method edited an existing record. /// </summary> /// <param name="id">Identification number of record which editing.</param> /// <param name="param">Instance that describe all information of record.</param> public void EditRecord(int id, ObjectParametrsForCreateAndEditRecord param) { if (!this.validator.ValidatePatameters(param)) { return; } FileCabinetRecord editingElement = this.list.Where <FileCabinetRecord>(t => t.Id == id).FirstOrDefault(); if (editingElement == null || param == null) { throw new ArgumentException($"Editing element whis id {id} does not exist."); } string oldFirstName = editingElement.FirstName; string oldLastName = editingElement.LastName; DateTime oldDateOfBirth = new DateTime(editingElement.DateOfBirth.Year, editingElement.DateOfBirth.Month, editingElement.DateOfBirth.Day); editingElement.FirstName = param.FirstName; editingElement.LastName = param.LastName; editingElement.DateOfBirth = param.DateOfBirth; editingElement.SuccsesfullDeals = param.SuccsesfullDeals; editingElement.AdditionCoefficient = param.AdditionCoefficient; editingElement.ManagerClass = param.ManagerClass; if (this.firstNameDictionary.ContainsKey(oldFirstName.ToUpper(CultureInfo.CurrentCulture))) { this.firstNameDictionary[oldFirstName.ToUpper(CultureInfo.CurrentCulture)] = this.list.Where <FileCabinetRecord>(t => t.FirstName == oldFirstName).ToList(); } if (this.lastNameDictionary.ContainsKey(oldLastName.ToUpper(CultureInfo.CurrentCulture))) { this.lastNameDictionary[oldLastName.ToUpper(CultureInfo.CurrentCulture)] = this.list.Where <FileCabinetRecord>(t => t.LastName == oldLastName).ToList(); } if (this.dateOfBirthNameDictionary.ContainsKey(oldDateOfBirth)) { this.dateOfBirthNameDictionary[oldDateOfBirth] = this.list.Where <FileCabinetRecord>(t => t.DateOfBirth == oldDateOfBirth).ToList(); } if (editingElement.FirstName != null && this.firstNameDictionary.ContainsKey(editingElement.FirstName.ToUpper(CultureInfo.CurrentCulture))) { this.firstNameDictionary[editingElement.FirstName.ToUpper(CultureInfo.CurrentCulture)] = this.list.Where <FileCabinetRecord>(t => t.FirstName == editingElement.FirstName).ToList(); } else { this.firstNameDictionary.Add(editingElement.FirstName.ToUpper(CultureInfo.CurrentCulture), this.list.Where <FileCabinetRecord>(t => t.FirstName == editingElement.FirstName).ToList()); } if (editingElement.LastName != null && this.lastNameDictionary.ContainsKey(editingElement.LastName.ToUpper(CultureInfo.CurrentCulture))) { this.lastNameDictionary[editingElement.LastName.ToUpper(CultureInfo.CurrentCulture)] = this.list.Where <FileCabinetRecord>(t => t.LastName == editingElement.LastName).ToList(); } else { this.lastNameDictionary.Add(editingElement.LastName.ToUpper(CultureInfo.CurrentCulture), this.list.Where <FileCabinetRecord>(t => t.LastName == editingElement.LastName).ToList()); } if (editingElement.DateOfBirth != null && this.dateOfBirthNameDictionary.ContainsKey(editingElement.DateOfBirth)) { this.dateOfBirthNameDictionary[editingElement.DateOfBirth] = this.list.Where <FileCabinetRecord>(t => t.DateOfBirth == editingElement.DateOfBirth).ToList(); } else { this.dateOfBirthNameDictionary.Add(editingElement.DateOfBirth, this.list.Where <FileCabinetRecord>(t => t.DateOfBirth == editingElement.DateOfBirth).ToList()); } }