//step 3 private void Complete() { ClientModel cm = new ClientModel(); if(cm.Exists(this.InnerClient)) { GuiHelper.ShowError(this, "El cliente que intenta añadir ya existe, o hay algún cliente registrado con el mismo nombre y apellido."); this.Step -= 1; } else { this.Success(this.InnerClient); this.Destroy(); } }
public static Client FromId(long id) { ClientModel cm = new ClientModel(); IDataReader r = cm.GetById(id); Client c = null; if(r.Read()) { c = new Client(); c.Name = (string) r["Name"]; c.Surname = (string) r["Surname"]; c.Address = (string) r["Address"]; c.PhoneNumber = r["PhoneNumber"].ToString(); c.Email = (string) r["Email"]; return c; } return c; }
private void DoOk(object sender, EventArgs args) { Member m = new Member(); m.Id = this.CurrentClient.Id; m.Sync(); MemberModel mm = new MemberModel(); if(m.Active != this.ActiveCheck.Active) mm.Update(m, "Active", this.ActiveCheck.Active); if(this.ImageToSave != null && this.ImageToSave.Length != m.BinImage.Length) { m.BinImage = this.ImageToSave; mm.SetImage(m); } if(m.Weight != this.WeightSpin.Value) mm.Update(m, "Weight", this.WeightSpin.Value); if(m.Height != this.HeightSpin.Value) mm.Update(m, "Height", this.HeightSpin.Value); char ctrl_gender = this.GenderCombo.Active == 0 ? 'm' : 'f'; if(m.Gender != ctrl_gender) mm.Update(m, "Gender", ctrl_gender); if(m.BirthDate.CompareTo(this.BirthdayWidget.Date) != 0) mm.Update(m, "BirthDate", this.BirthdayWidget.Date.ToString("yyyy-MM-dd")); if(m.InnerContact.Id == 0 && !string.IsNullOrEmpty(this.ContactNameEntry.Text.Trim() + this.ContactPhoneEntry.Text.Trim())) { DbModel model = new DbModel("Contact"); model.Insert(null, this.ContactNameEntry.Text.Trim(), this.ContactPhoneEntry.Text.Trim()); long last = model.LastInsertId; mm.Update(m, "Contact", last); } else if(m.InnerContact.Name != this.ContactNameEntry.Text || m.InnerContact.PhoneNumber != this.ContactPhoneEntry.Text) { DbModel model = new DbModel("Contact"); model.UpdateById(m.InnerContact.Id, "Name", this.ContactNameEntry.Text.Trim()); model.UpdateById(m.InnerContact.Id, "PhoneNumber", this.ContactPhoneEntry.Text.Trim()); } Client c = m.InnerClient; ClientModel cm = new ClientModel(); if(c.Name != this.NameEntry.Text) cm.Update(c, "Name", this.NameEntry.Text.Trim()); if(c.Surname != this.SurnameEntry.Text) cm.Update(c, "Surname", this.SurnameEntry.Text.Trim()); if(c.Address != this.AddressEntry.Text) cm.Update(c, "Address", this.AddressEntry.Text.Trim()); omarkhd.Validation.Validator v = new omarkhd.Validation.Validator(); v.SetRule(this.PhoneEntry.Text, "phone", omarkhd.Validation.ValidationRule.Natural); if(c.PhoneNumber != this.PhoneEntry.Text && v.Run().Status) cm.Update(c, "PhoneNumber", this.PhoneEntry.Text.Trim()); v = new omarkhd.Validation.Validator(); v.SetRule(this.EmailEntry.Text, "email", omarkhd.Validation.ValidationRule.Email); if(c.Email != this.EmailEntry.Text && v.Run().Status) cm.Update(c, "Email", this.EmailEntry.Text.Trim()); this.DoCancel(null, null); }
private void DoOk(object sender, EventArgs args) { Client c = this.CurrentClient; c.Name = this.NameEntry.Text; c.Surname = this.SurnameEntry.Text; c.Address = this.AddressEntry.Text; c.PhoneNumber = this.PhoneEntry.Text; c.Email = this.EmailEntry.Text; ClientModel model = new ClientModel(); if(!model.Update(c)) { GuiHelper.ShowError(this, "Ha ocurrido un error en la actualización del cliente"); return; } this.Init(); this.SelectClient(this.CurrentClient); }
private void DoSearch(object sender, EventArgs args) { string like = this.SearchEntry.Text; ClientModel model = new ClientModel(); this.FillNodeView(model.GetAllLike(like)); this.CleanForm(); this.EditButton.Sensitive = false; }
private void FillNodeView() { ClientModel model = new ClientModel(); this.FillNodeView(model.GetAll()); }
private void Init() { this.SearchEntry.Sensitive = true; this.EditButton.Sensitive = false; this.DeleteButton.Sensitive = false; this.OkButton.Sensitive = false; this.CancelButton.Sensitive = false; this.NameEntry.Sensitive = false; this.SurnameEntry.Sensitive = false; this.AddressEntry.Sensitive = false; this.PhoneEntry.Sensitive = false; this.EmailEntry.Sensitive = false; this.CleanForm(); ClientModel m = new ClientModel(); this.FillNodeView(m.GetAllLike(this.SearchEntry.Text.Trim())); this.ClientsNodeView.Sensitive = true; }
//step 2 private void ChooseClient() { //this means that the user has completed this step once, //and that she wants to choose if create or use existing client once more if(this.TargetMember.InnerClient != null) { this.TargetMember.InnerClient = null; this.OnPrevious(); return; } bool new_client = this.NewClientButton.Active; if(new_client) { ClientWizard cw = new ClientWizard(); cw.SuccessEvent += (object target) => { this.TargetMember.InnerClient = (Client) target; this.OnNext(); }; cw.CancelEvent += () => this.Step -= 1; cw.TransientFor = this; cw.Run(); } else { this.Description = "Elija un método para seleccionar al cliente que será nuevo miembro del gimnasio"; this.ClearContentBox(); this.ClientByIdButton = new RadioButton(null, "Id de usuario:"); this.ClientSearchButton = new RadioButton(this.ClientByIdButton, "Buscar manualmente"); Button test_button= new Button("Comprobar"); SpinButton id_spin = new SpinButton(0, 5000, 1); id_spin.Value = this.ClientId; id_spin.TooltipText = "Número de cliente"; Button search_button = new Button("Clientes..."); Label empty_label = new Label(" "); Label empty_label2 = new Label(" "); Label info_label = new Label(); this.PackWidgetSingle(this.ClientByIdButton); this.PackWidgetPair(id_spin, test_button, true); this.PackWidgetSingle(this.ClientSearchButton); this.PackWidgetPair(empty_label, search_button, true); this.PackWidgetSingle(empty_label2); this.PackWidgetSingle(new HSeparator()); this.PackWidgetSingle(info_label); //connecting local buttons this.ClientByIdButton.Clicked += (object sender, EventArgs args) => { bool state = this.ClientByIdButton.Active; id_spin.Sensitive = state; test_button.Sensitive = state; search_button.Sensitive = !state; }; id_spin.Changed += (object sender, EventArgs args) => { int id; this.ClientId = (int.TryParse(id_spin.Text, out id) ? id : id_spin.ValueAsInt); //this.ClientId = id_spin.ValueAsInt; }; id_spin.Value = this.ClientId; test_button.Clicked += (object sender, EventArgs args) => { long id = this.ClientId; ClientModel m = new ClientModel(); if(m.ExistsById(id)) { IDataReader r = m.GetById(id); r.Read(); Client c = new Client(); c.Id = id; c.Name = (string) r["Name"]; c.Surname = (string) r["Surname"]; c.Address = (string) r["Address"]; c.Email = (string) r["Email"]; c.PhoneNumber = r["PhoneNumber"].ToString(); string s = c.ToString(); if(m.IsMember(c)) s += "\n(Ya es miembro)"; info_label.Text = s; } else { info_label.Text = "Número de cliente (" + id + ") no encontrado"; this.TargetMember.InnerClient = null; } }; search_button.Clicked += (object sender, EventArgs args) => { info_label.Text = "No implementado"; }; this.ClientByIdButton.Click(); this.ContentVBox.ShowAll(); id_spin.HasFocus = true; } }
private void Summary() { this.ClearContentBox(); this.Description = "Se dará de alta al siguiente nuevo miembro del gimnasio"; this.NextLabel = "Aceptar"; Gtk.Image img = null; if(this.TargetMember.BinImage != null) { Pixbuf pixbuf; pixbuf = new Pixbuf(this.TargetMember.BinImage); double s = 0.4; pixbuf = pixbuf.ScaleSimple((int) (pixbuf.Width * s), (int) (pixbuf.Height * s), InterpType.Bilinear); img = new Gtk.Image(pixbuf); } ClientModel cm = new ClientModel(); Client client = null; bool new_client = (this.TargetMember.InnerClient == null ? false : true); if(!new_client) { IDataReader r = cm.GetById(this.ClientId); r.Read(); client = new Client(); client.Id = this.ClientId; client.Name = (string) r["Name"]; client.Surname = (string) r["Surname"]; client.Address = (string) r["Address"]; client.PhoneNumber = ((decimal) r["PhoneNumber"]).ToString(); client.Email = (string) r["Email"]; this.TargetMember.InnerClient = client; } else { client = this.TargetMember.InnerClient; client.Id = -1; } PackModel pm = new PackModel(); IDataReader pr = pm.GetById(this.TargetMember.Pack); pr.Read(); string p_name = (string) pr["Name"]; double p_price = (float) pr["Price"]; string str_pay = string.Empty; str_pay += "Fecha de ingreso: " + this.TargetMember.JoinDate.ToString("dd/MM/yyyy"); str_pay += "\nDía de pago: " + this.TargetMember.PaymentDay + " de cada mes"; str_pay += "\nInscrito a : " + p_name + " (" + string.Format("{0:C}", p_price) + " mensuales)"; string ct_str = string.Empty; if(this.TargetMember.InnerContact != null) { ct_str += "Contacto en caso de lesión\n"; ct_str += "Nombre: " + this.TargetMember.InnerContact.Name + "\n"; ct_str += "Teléfono: " + this.TargetMember.InnerContact.PhoneNumber; } if(img != null) this.PackWidgetSingle(img); this.PackWidgetSingle(new Label(client.ToString())); this.PackWidgetSingle(new Label(this.TargetMember.ToString())); this.PackWidgetSingle(new Label(str_pay)); this.PackWidgetSingle(new Label(ct_str)); this.ContentVBox.ShowAll(); }
//step 3 private void MemberInfo() { //if the member's inner client is null and the user has reached this //step, the user has chosen a client id instead of creating one... //and here we are verifying the info given before if(this.TargetMember.InnerClient == null) { ClientModel cm = new ClientModel(); bool error = false; string msg = ""; Client c = new Client(); c.Id = this.ClientId; if(!cm.ExistsById(c.Id)) { msg = "No se puede encontrar al número de cliente " + this.ClientId; error = true; } else if(cm.IsMember(c)) { msg = "El cliente elegido ya es un miembro del gimnasio"; error = true; } if(error) { GuiHelper.ShowError(this, msg); this.Step -= 1; return; } } //ok, let's continue if everything as expected: //if InnerClient == null, this.ClientId should hold //an integer pointing to an existing client :) if(!this.MemberInitialized) { this.MemberInitialized = true; this.TargetMember.Height = 1.0; this.TargetMember.Weight = 40.0; this.TargetMember.Gender = 'm'; this.TargetMember.BirthDate = DateTime.Today; Contact ctc = new Contact(); ctc.Name = ""; ctc.PhoneNumber = ""; this.TargetMember.InnerContact = ctc; this.TargetMember.PaymentDay = DateTime.Today.Day; this.TargetMember.JoinDate = DateTime.Today; this.TargetMember.Pack = 0; } this.ClearContentBox(); this.Description = "Información requerida del nuevo miembro"; Label l1 = new Label("Peso (Kg)"); Label l2 = new Label("Estatura (Mts)"); Label l3 = new Label("Sexo"); Label l4 = new Label("Nacimiento"); Label l5 = new Label("\nEn caso de accidente, contactar a la siguiente persona:\n"); Label l6 = new Label("Nombre"); Label l7 = new Label("Teléfono"); SpinButton weight_spin = new SpinButton(40, 200, 0.01); SpinButton height_spin = new SpinButton(1, 2.5, 0.01); ComboBox gender_combo = new ComboBox(new string[] {"Masculino", "Femenino"}); DateWidget dw = new DateWidget(); Entry contact_name_entry = new Entry(); Entry contact_phone_entry = new Entry(); weight_spin.Changed += (s, a) => { float weight; this.TargetMember.Weight = (float.TryParse(weight_spin.Text, out weight) ? weight : weight_spin.Value); }; height_spin.Changed += (s, a) => { float height; this.TargetMember.Height = (float.TryParse(height_spin.Text, out height) ? height : height_spin.Value); }; gender_combo.Changed += (s, a) => this.TargetMember.Gender = (gender_combo.Active == 0 ? 'm' : 'f'); contact_name_entry.Changed += (s, a) => this.TargetMember.InnerContact.Name = contact_name_entry.Text.Trim(); contact_phone_entry.Changed += (s, a) => this.TargetMember.InnerContact.PhoneNumber = contact_phone_entry.Text.Trim(); dw.Changed += (s, a) => this.TargetMember.BirthDate = dw.Date; this.PackWidgetPair(l1, weight_spin); this.PackWidgetPair(l2, height_spin); this.PackWidgetPair(l3, gender_combo); this.PackWidgetPair(l4, dw.Box); this.PackWidgetSingle(l5); this.PackWidgetPair(l6, contact_name_entry); this.PackWidgetPair(l7, contact_phone_entry); weight_spin.Value = this.TargetMember.Weight; height_spin.Value = this.TargetMember.Height; gender_combo.Active = (this.TargetMember.Gender == 'm' ? 0 : 1); dw.Date = this.TargetMember.BirthDate; contact_name_entry.Text = this.TargetMember.InnerContact.Name; contact_phone_entry.Text = this.TargetMember.InnerContact.PhoneNumber; this.ContentVBox.ShowAll(); }
private void NewClient(object sender, EventArgs args) { ClientWizard w = new ClientWizard(); w.SuccessEvent += (object c) => { Client client = (Client) c; ClientModel client_m = new ClientModel(); bool success = client_m.Insert(client); if(!success) GuiHelper.ShowError(w, "No se pudo completar la operación debido a un error interno"); }; w.Run(); }
private void NewEnrollment(object sender, EventArgs args) { MemberWizard ww = new MemberWizard(); ww.SuccessEvent += (object o) => { Member m = (Member) o; Client c = m.InnerClient; ClientModel cm = new ClientModel(); MemberModel mm = new MemberModel(); ///adding the new client if needed if(c.Id == -1) //-1 = new client { cm.Insert(c); c.Id = cm.LastInsertId; } //add the contact info if(m.InnerContact.Name.Length > 0) { DbModel contact_m = new DbModel("Contact"); contact_m.Insert(null, m.InnerContact.Name, m.InnerContact.PhoneNumber); m.InnerContact.Id = contact_m.LastInsertId; } //adding the member m.Id = c.Id; mm.Insert(m); //adding the membership debt if(m.ChargeMembership) { DbModel mship_m = new DbModel("MembershipDebt"); mship_m.Insert(m.Id, null); } PaymentRuler.ChargeFirstMonth(m); }; ww.Run(); }