예제 #1
0
        //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();
            }
        }
예제 #2
0
파일: ClientModel.cs 프로젝트: omarkhd/gymk
        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;
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
 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;
 }
예제 #6
0
 private void FillNodeView()
 {
     ClientModel model = new ClientModel();
     this.FillNodeView(model.GetAll());
 }
예제 #7
0
        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;
        }
예제 #8
0
        //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;
            }
        }
예제 #9
0
        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();
        }
예제 #10
0
        //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();
        }
예제 #11
0
파일: GymkWindow.cs 프로젝트: omarkhd/gymk
        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();
        }
예제 #12
0
파일: GymkWindow.cs 프로젝트: omarkhd/gymk
        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();
        }