public ActionResult Edit(int id, string EditorID, string Note, int FlightID) { //проверяем количество пассажиров зарегестрированных на рейс и количество для регистрации var total = db.RegistrationLists.Where(s => s.Flight.id == FlightID); var passenger = db.RegistrationLists.Find(id); var qt = db.Flights.Find(FlightID); if (total.Count() >= qt.Number) { return(Json("На этом рейсе нет свободных мест для регистрации пассажира!")); } if (qt.Approved.Trim() == "Ограничена") { if (User.IsInRole(qt.FlightDate.ToString("dddd")) || (User.IsInRole("allday"))) { var registrationList = db.RegistrationLists.Find(id); registrationList.EditorId = EditorID; registrationList.Note = Note; registrationList.FlightID = FlightID; //если рейс был изменён, то сохраняем его if (ModelState.IsValid) { db.Entry(registrationList).State = EntityState.Modified; db.SaveChanges(); } return(Json("Ok")); } else { return(Json("Вы не можете переместить пассажира на Рейс №" + qt.FlightNum + "! Регистрация на выбранный рейс ограничена и недоступна для Вас.")); } } else { var registrationList = db.RegistrationLists.Find(id); registrationList.EditorId = EditorID; registrationList.Note = Note; registrationList.FlightID = FlightID; //если рейс был изменён, то сохраняем его if (ModelState.IsValid) { db.Entry(registrationList).State = EntityState.Modified; db.SaveChanges(); } return(Json("Ok")); } }
public async Task <ActionResult> ChangePasswordAdmin(ChangePasswordAdmin model) { if (ModelState.IsValid) { //Так как функция AddPasswordAsync не изменяет пароль если он существует, то сначала мы его удалим из базы using (AirFlightContext db = new AirFlightContext()) { var pass = db.AspNetUsers.Find(model.UserId); pass.PasswordHash = null; db.Entry(pass).State = EntityState.Modified; db.SaveChanges(); } //Затем изменим. Если пароль введён согласно правилам (Заглавные буквы и строчные и цифры), то возвращаемся на страницу ролей var result = await UserManager.AddPasswordAsync(model.UserId, model.NewPassword); if (result.Succeeded) { return(RedirectToAction("AddRole", "Admin", new { UserId = model.UserId, Message = "Пароль успешно изменён" })); } AddErrors(result); } // Это сообщение означает наличие ошибки; повторное отображение формы return(View(model)); }
//редактирование телефона #region EditPhones public ActionResult EditPhones(PhoneBook phone) { if (ModelState.IsValid) { db.Entry(phone).State = EntityState.Modified; db.SaveChanges(); return(Json("Ok", JsonRequestBehavior.AllowGet)); } return(Json("Ошибка при редактировании справочника", JsonRequestBehavior.AllowGet)); }
public void Execute(IJobExecutionContext context) { DateTime last = DateTime.Now.Date.AddDays(-1); var notarchive = db.Flights.Where(f => f.Approved != "В архиве" && f.FlightDate <= last).ToList(); var notclose = notarchive.Where(f => f.Approved.Trim() != "Закрыта").ToList(); if (notclose.Count() > 0) { foreach (var c in notclose) { c.Approved = "Закрыта"; db.Entry(c).State = EntityState.Modified; db.SaveChanges(); } } }
//Сохранение при изменении новостей #region SaveEditNews public ActionResult SaveEditNews(New News) { var news = db.News.Find(News.Id); news.Header = News.Header; news.Content = News.Content; news.Add = News.Add; if (ModelState.IsValid) { db.Entry(news).State = EntityState.Modified; db.SaveChanges(); return(Json("Ok")); } return(Json("Ошибка сохранения!")); }
//Сохранение при изменении public async Task <ActionResult> SaveEditPassenger(Passenger passenger, string confirmphone = "no") { var passported = db.Passengers.Where(s => s.Passport == passenger.Passport); //ищем пассажира по паспортным данным if (passported.Count() > 0 && passported.FirstOrDefault().id != passenger.id) { return(Json("Паспортные данные " + passenger.Passport + " совпадают с данными пассажира " + passported.FirstOrDefault().Surname + " " + passported.FirstOrDefault().Name + " " + passported.FirstOrDefault().Middlename + ". Пожалуйста, проверьте правильность заполнения!")); } if (passenger.EmployeeNum != null) { var emplnum = db.Passengers.Where(s => s.EmployeeNum == passenger.EmployeeNum); //ищем пассажира по табельному номеру if (emplnum.Count() > 0 && emplnum.FirstOrDefault().id != passenger.id) { return(Json("Табельный номер " + passenger.EmployeeNum + " совпадает с данными пассажира " + emplnum.FirstOrDefault().Surname + " " + emplnum.FirstOrDefault().Name + " " + emplnum.FirstOrDefault().Middlename + ". Пожалуйста, проверьте правильность заполнения!")); } } if (passenger.PhoneNum != null) { var phone = db.Passengers.Where(p => p.PhoneNum == passenger.PhoneNum); if (phone.Count() > 0 && phone.FirstOrDefault().id != passenger.id) { if (confirmphone == "yes") { using (AirFlightContext db = new AirFlightContext()) { if (ModelState.IsValid) { db.Entry(passenger).State = EntityState.Modified; await db.SaveChangesAsync(); return(Json("Изменено")); } } return(View(passenger)); } else { return(Json("Номер телефона " + passenger.PhoneNum + " совпадает с номеро телефона сотрудника " + phone.FirstOrDefault().Surname + " " + phone.FirstOrDefault().Name + " " + phone.FirstOrDefault().Middlename + ". Вы действительно хотите сохранить его?")); } } } //using необходим для сохранения изменений. Так как мы делаем проверку данных выше, то сущность блокируется и выставить ей //статус Modified не получится. Поэтому тут явно указываем dbContext для сохранения изменений using (AirFlightContext db = new AirFlightContext()) { if (ModelState.IsValid) { db.Entry(passenger).State = EntityState.Modified; await db.SaveChangesAsync(); return(Json("Изменено")); } } return(Json("Ошибка заполнения полей данных!")); }
//Рассылка Смс public void SendSmsRegistration() { //Получаем список: Текущая дата и Текущая дата+2 дня, регистрация закрыта и сообщение не отправлено var sendsmslist = db.RegistrationLists.Include(f => f.Flight).Include(p => p.Passenger).Where(s => s.Flight.FlightDate > SD && s.Flight.FlightDate <= ED && s.Flight.Approved.Trim() == "Закрыта" && s.SendingSms != true && s.Passenger.SendSms == true && s.Passenger.PhoneNum != null).ToList(); int counterr = 0; if (sendsmslist != null) { foreach (var sms in sendsmslist) { try { var sendsms = new WebClient(); sendsms.DownloadString("http://www.mcommunicator.ru/m2m/m2m_api.asmx/SendMessage?login=79142518694&password=3b4e5b2d9297880bf800e4260e6db603&naming=NakynFly&msid=" + sms.Passenger.PhoneNum.Trim() + "&message=" + sms.Passenger.Name.Trim() + (string.IsNullOrWhiteSpace(sms.Passenger.Middlename)?"": " " + sms.Passenger.Middlename.Trim()) + ", Ваш вылет по маршруту " + sms.Flight.Departure + "-" + sms.Flight.Arrival + ": " + sms.Flight.FlightDate.ToLongDateString() + " (" + sms.Flight.FlightDate.ToString("dddd") + ") в " + sms.Flight.FlightTime.ToString().Substring(0, 5) + ". Рейс №" + sms.Flight.FlightNum + " (" + sms.Flight.AirType.ToLower() + ")."); //Сохраняем признак того, что рассылка пользователю сделана var sendlist = db.RegistrationLists.Find(sms.id); sendlist.ChangeNum = false; sendlist.SendingSms = true; db.Entry(sendlist).State = EntityState.Modified; db.SaveChanges(); } catch { counterr++; continue; } } //Для оповещения о рассылке выставляем флаг в таблице рейсы, что рассылка произведена foreach (var FlightID in sendsmslist.Select(s => s.FlightID).Distinct()) { var FlightSendSms = db.Flights.Find(FlightID); //узнаём количество пассажиров на рейсе, которое должно было получить смс var countpass = sendsmslist.Where(c => c.FlightID == FlightID); //узнаём сколько смс по факту мы отправили var countsmssend = countpass.Where(s => s.SendingSms == true); //если кличество смс для отправки равно количеству отправленных смс по факту то пише true иначе false if (countpass.Count() == countsmssend.Count()) { FlightSendSms.SendingSms = true; db.Entry(FlightSendSms).State = EntityState.Modified; db.SaveChanges(); } else { FlightSendSms.SendingSms = false; db.Entry(FlightSendSms).State = EntityState.Modified; db.SaveChanges(); } } } }
public void SendEmailPassener() { //Получаем список: Текущая дата и Текущая дата+7 дней, регистрация закрыта и сообщение не отправлено var sendlist = db.RegistrationLists.Include(f => f.Flight).Include(p => p.Passenger).Where(s => s.Flight.FlightDate >= SD && s.Flight.FlightDate <= ED && s.Flight.Approved.Trim() == "Закрыта" && s.SendingEmail == false).ToList(); var sendemaillist = sendlist.Where(s => s.Passenger.SendEmail == true && s.Passenger.Email != null && s.Passenger.Email.Trim().Length > 10); var sendemail2list = sendlist.Where(s => s.Passenger.SendEmail2 == true && s.Passenger.Email2 != null && s.Passenger.Email2.Trim().Length > 10); int countsend = 0; if (sendemaillist != null) { // отправитель - устанавливаем адрес и отображаемое в письме имя MailAddress from = new MailAddress("*****@*****.**", "Регистрация НГОК"); // адрес smtp-сервера и порт, с которого будем отправлять письмо SmtpClient smtp = new SmtpClient("smtp.mail.ru", 587); //SmtpClient smtp = new SmtpClient("mir-rpc.alrosa.ru", 587); - компанейская почта //// логин и пароль smtp.Credentials = new NetworkCredential("*****@*****.**", "3tlg8XmM"); smtp.EnableSsl = true; foreach (var email in sendemaillist) { // if (email.Passenger.SendEmail == true && email.Passenger.Email != null && email.Passenger.Email.Trim().Length > 6) // кому отправляем MailAddress to = new MailAddress(email.Passenger.Email.Trim()); // создаем объект сообщения MailMessage m = new MailMessage(from, to) { // тема письма Subject = "Регистрация", // текст письма Body = "<h2>" + email.Passenger.Name.Trim() + " " + email.Passenger.Middlename.Trim() + ", здравствуйте!" + "<h2>Вы были зарегистрированы на рейс, вылетающий " + email.Flight.FlightDate.ToLongDateString() + " по маршруту " + email.Flight.Departure.Trim() + " - " + email.Flight.Arrival.Trim() + "." + "<h2>Рейс номер " + email.Flight.FlightNum + ", время вылета " + email.Flight.FlightTime.ToString().Substring(0, email.Flight.FlightTime.ToString().Length - 3) + "<h2>Тип воздушного судна " + email.Flight.AirType.Trim() + ".<h2>", //// письмо представляет код html IsBodyHtml = true }; // адрес smtp-сервера и порт, с которого будем отправлять письмо try { smtp.Send(m); //Сохраняем признак того, что рассылка пользователю сделана var sendeamil = db.RegistrationLists.Find(email.id); sendeamil.SendingEmail = true; db.Entry(sendeamil).State = EntityState.Modified; db.SaveChanges(); } catch { countsend++; continue; } } } //рассылка на личный email2 if (sendemail2list != null) { MailAddress from = new MailAddress("*****@*****.**", "Регистрация НГОК"); SmtpClient smtp = new SmtpClient("smtp.mail.ru", 587); smtp.Credentials = new NetworkCredential("*****@*****.**", "3tlg8XmM"); smtp.EnableSsl = true; foreach (var email2 in sendemail2list) { MailAddress to = new MailAddress(email2.Passenger.Email2.Trim()); MailMessage m2 = new MailMessage(from, to) { Subject = "Регистрация", Body = "<h2>" + email2.Passenger.Name.Trim() + " " + email2.Passenger.Middlename.Trim() + ", здравствуйте!" + "<h2>Вы были зарегистрированы на рейс, вылетающий " + email2.Flight.FlightDate.ToLongDateString() + " по маршруту " + email2.Flight.Departure.Trim() + " - " + email2.Flight.Arrival.Trim() + "." + "<h2>Рейс номер " + email2.Flight.FlightNum + ", время вылета " + email2.Flight.FlightTime.ToString().Substring(0, email2.Flight.FlightTime.ToString().Length - 3) + "<h2>Тип воздушного судна " + email2.Flight.AirType.Trim() + ".<h2>", IsBodyHtml = true }; try { //Это на случай если у пользователя указан только личный email smtp.Send(m2); //Сохраняем признак того, что рассылка пользователю сделана var sendeamil2 = db.RegistrationLists.Find(email2.id); sendeamil2.SendingEmail = true; db.Entry(sendeamil2).State = EntityState.Modified; db.SaveChanges(); } catch { countsend++; continue; } } } //Для оповещения о рассылке выставляем флаг в таблице рейсы, что рассылка произведена foreach (var SendEmail in sendlist.Select(s => s.FlightID).Distinct()) { try { var FlightSendEmail = db.Flights.Find(SendEmail); //если ещё флаг не выставляли, то записываем FlightSendEmail.SendingEmail = true; db.Entry(FlightSendEmail).State = EntityState.Modified; db.SaveChanges(); } catch { continue; } } }