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"); } }
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(); }
private void FillData() { using (var context = new musicstudiodbContext()) { //ddlTeacher.DataSource = context.Teachers.ToList(); //ddlTeacher.DataBind(); //ddlSubject.DataSource = context.Subjects.ToList(); //ddlSubject.DataBind(); } }
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 = } }
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; } } }
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 }); } }
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(); } }
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); } }
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); }
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"); } }