Exemple #1
0
        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"));
            }
        }
Exemple #2
0
        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));
        }
Exemple #3
0
 //редактирование телефона
 #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));
 }
Exemple #4
0
        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();
                }
            }
        }
Exemple #5
0
      //Сохранение при изменении новостей
      #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("Ошибка сохранения!"));
      }
Exemple #6
0
        //Сохранение при изменении
        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("Ошибка заполнения полей данных!"));
        }
Exemple #7
0
        //Рассылка Смс
        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();
                    }
                }
            }
        }
Exemple #8
0
        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;
                }
            }
        }