コード例 #1
0
        public TrainingDetailsForm(User user, List <User> users, Training training, TrainingDetailsMode mode)
        {
            InitializeComponent();
            this.user     = user;
            this.training = training;
            this.mode     = mode;
            Text          = training.date.ToString();
            switch (mode)
            {
            case TrainingDetailsMode.Edit:
                //nameEdit.Enabled = true;
                nameEdit.Text          = training.name;
                addTrainingBtn.Visible = false;
                subBtn.Visible         = false;
                break;

            case TrainingDetailsMode.New:
                nameEdit.Enabled = true;
                okBtn.Visible    = false;
                subBtn.Visible   = false;
                break;

            case TrainingDetailsMode.View:
                addTrainingBtn.Visible = false;
                nameEdit.Text          = training.name;
                okBtn.Visible          = false;
                subscribed             = training.traineesId.FindIndex(x => x == user.id) >= 0;
                if (subscribed)
                {
                    subBtn.Text = "Отписаться";
                }
                break;
            }
            User coach = users.Find(x => x.id == training.coachId);

            for (int i = 0; i < training.traineesId.Count; i++)
            {
                User usr = users.Find(x => x.id == training.traineesId[i]);
                traineesList.Items.Add(usr.firstName + " " + usr.secondName);
            }
            coachEdit.Text = coach.firstName + " " + coach.secondName;
        }
コード例 #2
0
        private void Cell_Click(object sender, EventArgs e)
        {
            TableLayoutPanelCellPosition cell = calendar.GetPositionFromControl((Control)sender);

            if (cell.Column == 0 && cell.Row == 0)
            {
                return;
            }
            Training            training;
            TrainingDetailsMode mode = TrainingDetailsMode.View;
            Button btn = (Button)sender;

            if (btn.Text == "")
            {
                if (!user.isCoach)
                {
                    return;
                }
                training         = new Training();
                mode             = TrainingDetailsMode.New;
                training.coachId = user.id;
                training.date    = date.AddDays(cell.Column - 1).AddHours(cell.Row - 1 + startHour);
            }
            else
            {
                training = localTrainings.Find(t =>
                                               DateTime.Compare(t.date, date.AddDays(cell.Column - 1).AddHours(cell.Row - 1 + startHour)) == 0 &&
                                               t.syncState != SyncState.Deleted);
                if (training == null)
                {
                    return;
                }
                if (user.id == training.coachId)
                {
                    mode = TrainingDetailsMode.Edit;
                }
            }
            Debug.WriteLine("{0}:{1}, mode {2}, coach {3}", cell.Row, cell.Column, mode, training.coachId);
            TrainingDetailsForm details = new TrainingDetailsForm(user, users, training, mode);
            DialogResult        result  = details.ShowDialog();

            if (result == DialogResult.Abort)
            {
                return;
            }
            Cursor = Cursors.WaitCursor;
            trainingsMutex.WaitOne();
            if (result == DialogResult.OK)
            {
                training.name = details.nameEdit.Text;
                localTrainings.Add(training);
                AddTrainingToCell(btn, training);
            }
            else if (result == DialogResult.Ignore)
            {
                training.syncState = SyncState.Deleted;
                if (training.id == -1)
                {
                    localTrainings.Remove(training);
                }
                ClearCell(btn);
            }
            else if (result == DialogResult.Yes)
            {
                training.traineesId.Remove(user.id);
                training.syncState = SyncState.Updated;
            }
            else if (result == DialogResult.No)
            {
                training.traineesId.Add(user.id);
                training.syncState = SyncState.Updated;
            }
            trainingsMutex.Release();
            Cursor = Cursors.Default;
        }