• 1405/05/25

تمرین جلسه 113- تکمیل فرم ادیت کلاس :

با سلام

استاد من خودم با اطلاعات قبلی کدهای فرم را تکمیل کردم . شاید کمی متفاوت از کدهای شما باشد.

حذف و اضافه دانشجو (ورزشکار) به دوره و ثبت و ویرایش آن به درستی کار میکند.

با تشکر

using DataLayer.Contex;
using DataLayer.Models;
using System.Data;

namespace Gym_Managment.Courses
{
    public partial class frmAddOrEditCourse : Form
    {
        EF_GymManagment_DB_Contex _Contex = new EF_GymManagment_DB_Contex();
        public bool editMode = false;
        int rowItem = 0;
        public int courseId;

        public frmAddOrEditCourse()
        {
            InitializeComponent();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
        }

        private void frmAddOrEditCourse_Load(object sender, EventArgs e)
        {
            if (editMode)
            {
                this.Text = "ویرایش دوره";
                this.btnSave.Text = "ویرایش";
                BindList();
                BindDGV();
                LoadData();
            }
            else
            {
                BindList();
                BindDGV();
            }
        }

        void BindList()
        {
            var coachId = _Contex.Role.Where(r => r.PersonRole == "مربی").Select(p => p.PersonId).Distinct().ToList();
            cbCoachName.DataSource = _Contex.People.Where(p => coachId.Contains(p.PersonId))
                .Select(p => new
                {
                    p.PersonId,
                    FullName = p.Name + " " + p.Family
                })
                .ToList();
            cbCoachName.DisplayMember = "FullName";
            cbCoachName.ValueMember = "PersonId";
        }

        void BindDGV()
        {
            dgvPlayers.AutoGenerateColumns = false;
            dgvRegisterPlayer.RowHeadersWidth = 50;
            dgvPlayers.RowHeadersWidth = 50;

            var playerId = _Contex.Role.Where(r => r.PersonRole == "ورزشکار" )
                .Select(p => p.PersonId).Distinct().ToList();

            var list = _Contex.People
                .Where(p => playerId.Contains(p.PersonId)).ToList();

            foreach (var l in list)
            {
                dgvPlayers.Rows.Add(l.PersonId, l.Name + " " + l.Family, l.Mobile, l.Email);
            }
        }

        #region Vaidation
        bool InputValidation()
        {
            bool isValid = true;
            if (string.IsNullOrEmpty(txtCourseName.Text))
            {
                txtCourseName.BackColor = Color.Yellow;
                isValid = false;
            }
            else
            {
                txtCourseName.BackColor = Color.White;
            }

            if (string.IsNullOrEmpty(txtPlayerCount.Text) || txtPlayerCount.Value == 0)
            {
                txtPlayerCount.BackColor = Color.Yellow;
                isValid = false;
            }
            else
            {
                txtPlayerCount.BackColor = Color.White;
            }

            if (string.IsNullOrEmpty(txtCourseHoure.Text) || txtCourseHoure.Value == 0)
            {
                txtCourseHoure.BackColor = Color.Yellow;
                isValid = false;
            }
            else
            {
                txtCourseHoure.BackColor = Color.White;
            }

            return isValid;
        }

        #endregion

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (InputValidation())
            {
                if (editMode)
                {
                    var course = _Contex.Courses
                        .FirstOrDefault(c => c.CourseId == courseId);

                    course.Title = txtCourseName.Text;
                    course.CouchId = (int)cbCoachName.SelectedValue;
                    course.Hours = (int)txtCourseHoure.Value;
                    course.PlayerCount = (int)txtPlayerCount.Value;
                    course.Description = txtDescription.Text;
                    course.IsActive = rbCourseActive.Checked ? true : false;

                    _Contex.SaveChanges();

                    if (dgvRegisterPlayer.Rows.Count > 0)
                    {

                        for (int i = 0; i < dgvRegisterPlayer.Rows.Count; i++)
                        {
                            int playerId = Convert.ToInt32(dgvRegisterPlayer.Rows[i].Cells[0].Value.ToString());
                            bool exists = _Contex.PlayerInCourses.Any(x =>
                                x.CourseId == course.CourseId &&
                                x.PlayerId == playerId);
                            if (!exists)
                            {
                                PlayerInCourse playerInCourse = new PlayerInCourse()
                                {
                                    CourseId = course.CourseId,
                                    PlayerId = playerId,
                                    RegisterDate = DateTime.Now
                                };
                                _Contex.PlayerInCourses.Add(playerInCourse);
                            }
                        }
                        _Contex.SaveChanges();
                    }
                }
                else
                {
                    Course course = new Course();

                    course.Title = txtCourseName.Text;
                    course.CouchId = (int)cbCoachName.SelectedValue;
                    course.Hours = (int)txtCourseHoure.Value;
                    course.PlayerCount = (int)txtPlayerCount.Value;
                    course.Description = txtDescription.Text;
                    course.IsActive = rbCourseActive.Checked ? true : false;

                    _Contex.Courses.Add(course);
                    _Contex.SaveChanges();

                    if (dgvRegisterPlayer.Rows.Count > 0)
                    {
                        for (int i = 0; i < dgvRegisterPlayer.Rows.Count; i++)
                        {
                            string playerId = dgvRegisterPlayer.Rows[i].Cells[0].Value.ToString();
                            PlayerInCourse playerInCourse = new PlayerInCourse()
                            {
                                CourseId = course.CourseId,
                                PlayerId = int.Parse(playerId),
                                RegisterDate = DateTime.Now
                            };
                            _Contex.PlayerInCourses.Add(playerInCourse);
                        }
                        _Contex.SaveChanges();
                    }
                }
                this.Close();
                this.DialogResult = DialogResult.OK;
            }
        }

        private void LoadData()
        {
            var corseData = _Contex.Courses.Single(c => c.CourseId == courseId);

            txtCourseName.Text = corseData.Title.ToString();
            txtCourseHoure.Value = int.Parse(corseData.Hours.ToString());
            txtPlayerCount.Value = int.Parse(corseData.PlayerCount.ToString());
            txtDescription.Text = corseData.Description.ToString();
            cbCoachName.SelectedValue = corseData.CouchId;

            if (corseData.IsActive)
            {
                rbCourseActive.Checked = true;
            }
            else
            {
                rbCourseNotActive.Checked = true;
            }

            var registerPlayerId = _Contex.PlayerInCourses.Where(p => p.CourseId == courseId).Select(p => p.PlayerId).ToList();
            
            foreach (var item in registerPlayerId)
            {
                var registerPlayer = _Contex.People.Where(p => p.PersonId == item).Single();
                dgvRegisterPlayer.Rows.Add(registerPlayer.PersonId, registerPlayer.Name + " " + registerPlayer.Family);

                foreach (DataGridViewRow row in dgvPlayers.Rows)
                {
                    if (Convert.ToInt32(row.Cells[0].Value) == item)
                    {
                        row.Visible = false;
                    }
                }
            }
        }

        private void dgvRegisterPlayer_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            dgvRegisterPlayer.Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
        }

        private void dgvPlayers_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            dgvPlayers.Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
        }

        private void btnAddPlayer_Click(object sender, EventArgs e)
        {
            if (dgvPlayers.CurrentRow != null)
            {
                string playerId = dgvPlayers.CurrentRow.Cells[0].Value.ToString();
                string playerName = dgvPlayers.CurrentRow.Cells[1].Value.ToString();
                dgvRegisterPlayer.Rows.Add(playerId, playerName);
                dgvPlayers.CurrentRow.Visible = false;
            }
        }

        private void btnRemovePlayer_Click(object sender, EventArgs e)
        {
            if (dgvRegisterPlayer.CurrentRow == null)
                return;
            int playerId = Convert.ToInt32(dgvRegisterPlayer.CurrentRow.Cells[0].Value);
            dgvRegisterPlayer.Rows.Remove(dgvRegisterPlayer.CurrentRow);
            foreach (DataGridViewRow row in dgvPlayers.Rows)
            {
                if (Convert.ToInt32(row.Cells[0].Value) == playerId)
                {
                    row.Visible = true;
                }
            }
        }
    }
}
  • 1405/05/25
  • ساعت 08:21

بسیار عالی ، لذت بردم