private void BtnSave_Click(object sender, EventArgs e)
        {
            using (var context = new musicstudiodbContext())
            {
                try
                {
                    var abonement = new Abonement();
                    //abonement.ClientId = client.Id;
                    //abonement.DateEnd = calendarEnd.SelectedDate;
                    //abonement.DateStart = calendarStart.SelectedDate;
                    //abonement.LessonsCount = txtLessonCount.Text == "" ? 0 : int.Parse(txtLessonCount.Text);
                    //abonement.TeacherId = int.Parse(ddlTeacher.SelectedValue);
                    abonement.ClientId     = abonementEditor.ClientId;
                    abonement.DateEnd      = abonementEditor.DateEnd;
                    abonement.DateStart    = abonementEditor.DateStart;
                    abonement.LessonsCount = abonementEditor.LessonsCount;
                    //txtLessonCount.Text == "" ? 0 : int.Parse(txtLessonCount.Text);
                    abonement.TeacherId = abonementEditor.TeacherId;
                    context.Abonements.Add(abonement);
                    //client.CarMakeID = int.Parse(ddlMake.SelectedValue);
                    //client.CarYear = int.Parse(txtYear.Text);
                    //client.Model = txtModel.Text;
                    context.SaveChanges();
                }
                catch (DbUpdateException dbex)
                {
                    Response.Write("<script>alert('Заполните все поля')</script>");
                    return;
                }


                Response.Redirect("MainPage.aspx");
            }
        }
Ejemplo n.º 2
0
        protected void CalendarNextDate_SelectionChanged(object sender, EventArgs e)
        {
            if (ViewState["RepeaterAbonementId"] == null)
            {
                return;
            }

            var id = (int)ViewState["RepeaterAbonementId"];

            using (var context = new musicstudiodbContext())
            {
                var abon = context.Abonements.First(a => a.Id == id);
                if (abon == null)
                {
                    return;
                }

                abon.NextDate = calendarNextDate.SelectedDate;
                context.SaveChanges();

                FillAbonementsByClientId(abon.ClientId);
                calendarNextDate.Visible = false;
            }



            //calendarNextDate.SelectedDate
            //if (calendarNextDate.SelectedDate != DateTime.MinValue)
            //	lblSelected.Text = "The date selected is " +
            //	Calendar1.SelectedDate.ToShortDateString();

            //lblCountUpdate();
        }
Ejemplo n.º 3
0
        private void FillData()
        {
            using (var context = new musicstudiodbContext())
            {
                //ddlTeacher.DataSource = context.Teachers.ToList();
                //ddlTeacher.DataBind();

                //ddlSubject.DataSource = context.Subjects.ToList();
                //ddlSubject.DataBind();
            }
        }
Ejemplo n.º 4
0
        private void SetAbonementDateById(int abonementId)
        {
            using (var context = new musicstudiodbContext())
            {
                var abon = context.Abonements.First(a => a.Id == abonementId);
                if (abon == null)
                {
                    return;
                }

                //abon.NextDate =
            }
        }
Ejemplo n.º 5
0
        private void BtnSave_Click(object sender, EventArgs e)
        {
            using (var context = new musicstudiodbContext())
            {
                var client = context.Clients.First(a => a.Id == clientEditor.ClientId);
                try
                {
                    client.Name        = clientEditor.FirstName;
                    client.Surname     = clientEditor.Surname;
                    client.SecondName  = clientEditor.SecondName;
                    client.PhoneNumber = clientEditor.Phone;
                }
                catch (EntityDataSourceValidationException tbErr)
                {
                    Response.Write(tbErr.Message);
                    return;
                }
                try
                {
                    context.SaveChanges();
                    Response.Redirect("MainPage.aspx");
                }
                catch (DbEntityValidationException ex)
                {
                    // case of catching errors on saving new data in db
                    String message = "";
#if DEBUG
                    // show full err sequence to devs
                    foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors)
                    {
                        message += "Object: " + validationError.Entry.Entity.ToString() + "\t";
                        foreach (DbValidationError err in validationError.ValidationErrors)
                        {
                            message += err.ErrorMessage.ToString() + " ";
                        }
                    }
#else
                    // do not show extra info to user
                    message = "Server error occured"
#endif
                    Response.Write(message);
                    return;
                }
            }
        }
Ejemplo n.º 6
0
        public PagedResult <AbonementModel> FindPaged(int page = 1, int pageLen = 10, string sortBy = "", string sort = "")
        {
            using (var context = new musicstudiodbContext())
            {
                IEnumerable <Abonement> query = null;
                switch (sort)
                {
                case "asc":
                    query = (from a in context.Abonements select a).OrderBy(_sortFuncs[sortBy]);
                    break;

                case "desc":
                    query = (from a in context.Abonements select a).OrderByDescending(_sortFuncs[sortBy]).Skip((page - 1) * pageLen).Take(pageLen);
                    break;

                default:
                    query = (from a in context.Abonements select a).OrderBy(a => a.Id).Skip((page - 1) * pageLen).Take(pageLen);
                    break;
                }

                int pc = query.Count() / pageLen + 1;

                var sortedEntities = query.ToArray();

                var data = (from a in sortedEntities
                            select new AbonementModel()
                {
                    Id = a.Id,
                    DateStart = a.DateStart,
                    DateNext = a.NextDate,
                    DateEnd = a.DateEnd,
                    LessonsCount = a.LessonsCount,
                    TeacherSurname = a.Teacher.Surname,
                    ClientId = a.ClientId,
                    SubjectId = a.Teacher.SubjectId
                }).ToArray();

                return(new PagedResult <AbonementModel>()
                {
                    Page = data, PageCount = pc
                });
            }
        }
Ejemplo n.º 7
0
 private void FillAbonementsByClientId(int clientId)
 {
     using (var context = new musicstudiodbContext())
     {
         var ents = from a in context.Abonements
                    where a.ClientId == clientId
                    select new AbonementModel()
         {
             Id             = a.Id,
             DateStart      = a.DateStart,
             DateEnd        = a.DateEnd,
             DateNext       = a.NextDate.Value,
             TeacherSurname = a.Teacher.Surname,
             LessonsCount   = a.LessonsCount,
             ClientId       = a.ClientId
         };
         var entList = ents.ToList();
         rptClientAbonements.DataSource = entList;
         rptClientAbonements.DataBind();
     }
 }
Ejemplo n.º 8
0
        private void FillClients()
        {
            using (var cont = new musicstudiodbContext())
            {
                var clients = (from c in cont.Clients
                               select new ClientModel
                {
                    Id = c.Id,
                    FirstName = c.Name,
                    SecondName = c.SecondName,
                    Surname = c.Surname,
                    PhoneNumber = c.PhoneNumber,
                    RemainingAbonementsCount = c.Abonements.Count(
                        a =>
                        a.LessonsCount > a.VisitDates.Count() &&
                        a.DateEnd > DateTime.Now)
                }).ToList();
                dgClients.DataSource = clients;
                dgClients.DataBind();

                //FillAbonementsByClientId(clients[0].Id);
            }
        }
Ejemplo n.º 9
0
        private bool DeleteClient(int idForDelete, bool delAbonements)
        {
            errPanel.Visible  = false;
            buttonDel.Visible = false;

            try
            {
                using (var cont = new musicstudiodbContext())
                {
                    if (delAbonements)
                    {
                        cont.Abonements.RemoveRange(from a in cont.Abonements where a.ClientId == idForDelete select a);
                    }
                    var client = (from c in cont.Clients
                                  where c.Id == idForDelete
                                  select c).First();
                    cont.Clients.Remove(client);
                    cont.SaveChanges();
                }
            }
            //если мы не поставили каскадный update конечно
            catch (DbUpdateException dbex)
            {
                var entries = dbex.Entries.ToArray();
                if (entries.Length > 0)
                {
                    //dbexLblMsg.Text = (entries[0] as Teacher).Surname + " не поддается...";
                    //dbexLblMsg.Text = (entries[0].Entity as Teacher).Surname + " не поддается...";
                    //нужно юзать reflection (get property name by reflection)
                    var obj      = entries[0].Entity;
                    var property = obj.GetType().GetProperty("Surname");
                    var surname  = property.GetValue(obj, null);
                    dbexLblMsg.Text = surname + " не поддается...";

                    // try add button for delete with abonements
                    // need to save id value. MB by using Session
                    // решениее хорошо тем что id не полетит на клиент и останется в памяти сервера.
                    // и когда мы получим событие нажатия мы из session его достанем
                    // при этом сессия ассоциирована именно с нашем сеансом работы
                    // но у сессии есть и минусы
                    // если мы балансим серверы то может получится так что запрос придет на разгруженный сервер и там не будет нашей сессии
                    // даже если сервер один - сервер подвержен перезагрузкам. Recycle Pool
                    // внутри сервера IIS и внутри IIS - пулы. Как правило один пул на приложение
                    // есть определеный recycle interval после которого производится recycle pool чтобы он не жрал много памяти. и сессии удаляются
                    // также есть timeout и у сессии
                    // есть решение - сохранять сессию в БД

                    // можно избежать работу с сессией и использовать ViewState
                    // это тоже Dictionary как и сессия
                    // ViewState помещает зашифрованную коллекцию в hidden поле на странице
                    // Он не удаляется как сессия и все гарантированно доедет до сервера
                    // Минус viewState в том что hidden разрастается и повышается нагрузка на сеть
                    // В том числе существует form value limit у разных браузеров
                    if (!delAbonements)
                    {
                        buttonDel.Visible     = true;
                        ViewState["VictimID"] = idForDelete;
                    }
                }
                else
                {
                    dbexLblMsg.Text = "Ошибка удаления из БД (произошло что-то совсем нехорошее)";
                }
                errPanel.Visible = true;
                return(false);
            }
            return(true);
        }
Ejemplo n.º 10
0
        private void BtnSave_Click(object sender, EventArgs e)
        {
            using (var context = new musicstudiodbContext())
            {
                try
                {
                    var client = new Client();
                    try
                    {
                        client.Name        = clientEditor.FirstName;
                        client.Surname     = clientEditor.Surname;
                        client.SecondName  = clientEditor.SecondName;
                        client.PhoneNumber = clientEditor.Phone;
                    }
                    catch (EntityDataSourceValidationException tbErr)
                    {
                        Response.Write(tbErr.Message);
                        return;
                    }
                    try
                    {
                        context.Clients.Add(client);
                        context.SaveChanges();
                    }
                    catch (DbEntityValidationException ex)
                    {
                        // case of catching errors on saving new data in db
                        String message = "";
#if DEBUG
                        // show full err sequence to devs
                        foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors)
                        {
                            message += "Object: " + validationError.Entry.Entity.ToString() + "\t";
                            foreach (DbValidationError err in validationError.ValidationErrors)
                            {
                                message += err.ErrorMessage.ToString() + " ";
                            }
                        }
#else
                        // do not show extra info to user
                        message = "Server error occured"
#endif
                        Response.Write(message);
                        return;
                    }
                    var abonement = new Abonement();
                    //abonement.ClientId = client.Id;
                    //abonement.DateEnd = calendarEnd.SelectedDate;
                    //abonement.DateStart = calendarStart.SelectedDate;
                    //abonement.LessonsCount = txtLessonCount.Text == "" ? 0 : int.Parse(txtLessonCount.Text);
                    //abonement.TeacherId = int.Parse(ddlTeacher.SelectedValue);
                    abonement.ClientId     = client.Id;
                    abonement.DateEnd      = abonementEditor.DateEnd;
                    abonement.DateStart    = abonementEditor.DateStart;
                    abonement.LessonsCount = abonementEditor.LessonsCount;
                    //txtLessonCount.Text == "" ? 0 : int.Parse(txtLessonCount.Text);
                    abonement.TeacherId = abonementEditor.TeacherId;
                    context.Abonements.Add(abonement);
                    //client.CarMakeID = int.Parse(ddlMake.SelectedValue);
                    //client.CarYear = int.Parse(txtYear.Text);
                    //client.Model = txtModel.Text;
                    context.SaveChanges();
                }
                catch (DbUpdateException dbex)
                {
                    Response.Write("<script>alert('Заполните все поля')</script>");
                    return;
                }


                Response.Redirect("MainPage.aspx");
            }
        }