private void SetModifyMode() { if (RebateList.SelectedItems.Count == 0) { return; } ListViewItem list_item = RebateList.SelectedItems[0]; RebateRecord rebate_list_item = (RebateRecord)list_item.Tag; ClearForm(); firstName.Text = rebate_list_item.firstName; Minitial.Text = rebate_list_item.middleInitial; lastName.Text = rebate_list_item.lastName; Address1.Text = rebate_list_item.Address1; Address2.Text = rebate_list_item.Address2; City.Text = rebate_list_item.City; State.SelectedItem = rebate_list_item.State; Zip.Text = rebate_list_item.Zip; Gender.SelectedItem = rebate_list_item.Gender; Phone.Text = rebate_list_item.Phone; Email.Text = rebate_list_item.Email; Proof.SelectedItem = rebate_list_item.Proof; Date.Value = rebate_list_item.Date; curr_Mode = MODIFY; Status_label.Text = "Modifying Existing Rebate"; Save.Text = "Update"; Delete.Enabled = true; CanSave(); Save.Enabled = false; }
// Modifies an existing record in List. private void ModifyListViewItem(ListView list, RebateRecord entered_Record) { list.SelectedItems[0].Tag = entered_Record; list.SelectedItems[0].SubItems[0].Text = entered_Record.firstName; list.SelectedItems[0].SubItems[1].Text = entered_Record.lastName; list.SelectedItems[0].SubItems[2].Text = Regex.Replace(entered_Record.Phone, @"(\d{3})(\d{3})(\d{4})", "($1) $2-$3"); }
// New Rebate Records added and lines are read from file public void ReadRebateList(ListView list) { using (StreamWriter writeText = new StreamWriter(File.Open("CS6326Asg2.txt", System.IO.FileMode.Append))) { } using (StreamReader readText = new StreamReader("CS6326Asg2.txt")) { String record; string tab = "\t"; string[] record_split; while ((record = readText.ReadLine()) != null) { record_split = record.Split(tab.ToCharArray()); RebateRecord rebateItem = new RebateRecord(record_split[0], record_split[1], record_split[2], record_split[3], record_split[4], record_split[5], record_split[6], record_split[7], record_split[8], record_split[9], record_split[10], record_split[11], DateTime.Parse(record_split[12]), DateTime.Parse(record_split[13]), DateTime.Parse(record_split[14]), Int32.Parse(record_split[15])); ListViewItem viewItem = new ListViewItem(); viewItem.Tag = rebateItem; viewItem.Text = rebateItem.firstName; viewItem.SubItems.Add(rebateItem.lastName); viewItem.SubItems.Add(Regex.Replace(rebateItem.Phone, @"(\d{3})(\d{3})(\d{4})", "($1) $2-$3")); list.Items.Add(viewItem); } } }
// Adds a new record in List. private void AddListViewItem(ListView list, RebateRecord entered_Record) { ListViewItem list_item = new ListViewItem(); list_item.Tag = entered_Record; list_item.Text = entered_Record.firstName; list_item.SubItems.Add(entered_Record.lastName); list_item.SubItems.Add(Regex.Replace(entered_Record.Phone, @"(\d{3})(\d{3})(\d{4})", "($1) $2-$3")); list.Items.Add(list_item); }
// Itemlist written to File public void WriteRebateList(ListView list) { using (StreamWriter writeText = new StreamWriter("CS6326Asg2.txt")) { foreach (ListViewItem item in list.Items) { RebateRecord rebateItem = (RebateRecord)item.Tag; writeText.WriteLine(rebateItem); } } }
// Removes record from ListView when delete is pressed and writes to file. private void Delete_Click(object sender, EventArgs e) { deletedRecord = (RebateRecord)RebateList.SelectedItems[0].Tag; deletedRecordIndex = RebateList.SelectedItems[0].Index; RebateList.SelectedItems[0].Remove(); RebateFileHandler rebate_File = new RebateFileHandler(); rebate_File.WriteRebateList(RebateList); UndoMenuItem.Enabled = true; ClearForm(); Status_label.Text = "Deleted Rebate"; }
// Returns true if the RebateRecord has the same first name, last name and phone number public override bool Equals(Object obj) { RebateRecord rebateObject = obj as RebateRecord; if (rebateObject == null) { return(false); } else { return(firstName.Equals(rebateObject.firstName) && lastName.Equals(rebateObject.lastName) && Phone.Equals(rebateObject.Phone)); } }
// Copy Constructor sets values from another object while update or modify public RebateRecord(RebateRecord obj) { firstName = obj.firstName; middleInitial = obj.middleInitial; lastName = obj.lastName; Address1 = obj.Address1; Address2 = obj.Address2; City = obj.City; State = obj.State; Zip = obj.Zip; Gender = obj.Gender; Phone = obj.Phone; Email = obj.Email; Proof = obj.Proof; Date = obj.Date; StartTime = obj.StartTime; SaveTime = obj.SaveTime; Backspace = obj.Backspace; }
// Returns true if duplicate records are found in List. private bool SearchListViewItem(ListView list, RebateRecord entered_Record) { bool found = false; foreach (ListViewItem list_item in list.Items) { RebateRecord rebate_list_item = (RebateRecord)list_item.Tag; if (curr_Mode == ADD && entered_Record.Equals(rebate_list_item)) { found = true; } if (curr_Mode == MODIFY && entered_Record.Equals(rebate_list_item)) { if (rebate_list_item != (RebateRecord)RebateList.SelectedItems[0].Tag) { found = true; } } } return(found); }
// Enables save function if all fields are valid and required fields have been entered and no duplicates. private void CanSave() { // check if all required fields have been filled bool valid_Entry = Validator.ValidateTextField(firstName.Text) && Validator.ValidateInitial(Minitial.Text) && Validator.ValidateTextField(lastName.Text) && Validator.ValidateTextField(Address1.Text) && Validator.ValidateTextField(City.Text) && Validator.ValidateComboBox(State.SelectedItem) && Validator.ValidateZipCode(Zip.Text) && Validator.ValidateComboBox(Gender.SelectedItem) && Validator.ValidatePhoneNumber(Phone.Text) && Validator.ValidateEmailAddress(Email.Text) && Validator.ValidateComboBox(Proof.SelectedItem) && Validator.ValidateDate(Date.Value); RebateRecord entered_Record = new RebateRecord(); if (curr_Mode == MODIFY && RebateList.SelectedItems.Count != 0) { entered_Record = new RebateRecord((RebateRecord)RebateList.SelectedItems[0].Tag); } entered_Record.firstName = firstName.Text; entered_Record.middleInitial = Minitial.Text; entered_Record.lastName = lastName.Text; entered_Record.Address1 = Address1.Text; entered_Record.Address2 = Address2.Text; entered_Record.City = City.Text; entered_Record.State = State.Text; entered_Record.Zip = new string(Zip.Text.Where(char.IsDigit).ToArray()); //zipcode should only be numbers entered_Record.Gender = Gender.Text; entered_Record.Phone = new string(Phone.Text.Where(char.IsDigit).ToArray()); // phone number should only have numbers entered_Record.Email = Email.Text; entered_Record.Proof = Proof.Text; entered_Record.Date = Date.Value; switch (curr_Mode) { case ADD: if (start_time.CompareTo(DateTime.MinValue) == 0) { start_time = DateTime.Now; } if (valid_Entry && !SearchListViewItem(RebateList, entered_Record)) //Duplicate records checked { Save.Enabled = true; FieldError.SetError(firstName, ""); FieldError.SetError(lastName, ""); FieldError.SetError(Phone, ""); } else { Save.Enabled = false; if (SearchListViewItem(RebateList, entered_Record)) { FieldError.SetError(firstName, "Found existing rebate with same name and phone number!"); FieldError.SetError(lastName, "Found existing rebate with same name and phone number!"); FieldError.SetError(Phone, "Found existing rebate with same name and phone number!"); } } break; case MODIFY: if (valid_Entry && !SearchListViewItem(RebateList, entered_Record)) { Save.Enabled = true; FieldError.SetError(firstName, ""); FieldError.SetError(lastName, ""); FieldError.SetError(Phone, ""); } else { Save.Enabled = false; if (SearchListViewItem(RebateList, entered_Record)) { FieldError.SetError(firstName, "Found existing rebate with same name and phone number!"); FieldError.SetError(lastName, "Found existing rebate with same name and phone number!"); FieldError.SetError(Phone, "Found existing rebate with same name and phone number!"); } } break; } }
// After saving, the records are written to file. private void Save_Click(object sender, EventArgs e) { RebateRecord entered_Record; RebateFileHandler rebate_File = new RebateFileHandler(); switch (curr_Mode) { case ADD: entered_Record = new RebateRecord(); entered_Record.firstName = firstName.Text; entered_Record.middleInitial = Minitial.Text; entered_Record.lastName = lastName.Text; entered_Record.Address1 = Address1.Text; entered_Record.Address2 = Address2.Text; entered_Record.City = City.Text; entered_Record.State = State.Text; entered_Record.Zip = new string(Zip.Text.Where(char.IsDigit).ToArray()); entered_Record.Gender = Gender.Text; entered_Record.Phone = new string(Phone.Text.Where(char.IsDigit).ToArray()); entered_Record.Email = Email.Text; entered_Record.Proof = Proof.Text; entered_Record.Date = Date.Value; entered_Record.StartTime = start_time; entered_Record.SaveTime = DateTime.Now; entered_Record.Backspace = backSpace_count; if (!SearchListViewItem(RebateList, entered_Record)) { AddListViewItem(RebateList, entered_Record); rebate_File.WriteRebateList(RebateList); ClearForm(); } break; case MODIFY: entered_Record = new RebateRecord((RebateRecord)RebateList.SelectedItems[0].Tag); entered_Record.firstName = firstName.Text; entered_Record.middleInitial = Minitial.Text; entered_Record.lastName = lastName.Text; entered_Record.Address1 = Address1.Text; entered_Record.Address2 = Address2.Text; entered_Record.City = City.Text; entered_Record.State = State.Text; entered_Record.Zip = new string(Zip.Text.Where(char.IsDigit).ToArray()); entered_Record.Gender = Gender.Text; entered_Record.Phone = new string(Phone.Text.Where(char.IsDigit).ToArray()); entered_Record.Email = Email.Text; entered_Record.Proof = Proof.Text; entered_Record.Date = Date.Value; if (!SearchListViewItem(RebateList, entered_Record)) { ModifyListViewItem(RebateList, entered_Record); rebate_File.WriteRebateList(RebateList); ClearForm(); } break; } }