Exemple #1
0
        //Считаем количество пользователей на сайте. При начале сессии записываем в базу данные о посетителе
        protected void Session_Start(object sender, EventArgs e)
        {
            Visit Visits = new Visit()
            {
                VisitData = DateTime.Now,
                IP        = HttpContext.Current.Request.UserHostAddress,
                // HostName = Dns.GetHostEntry(HttpContext.Current.Request.UserHostAddress).HostName,
                //UserAgent = request.UserAgent, //временно убрал сбор статистики об агенте пользователя
                UserBrowser = HttpContext.Current.Request.Browser.Browser,
            };

            try
            {
                Visits.HostName = Dns.GetHostEntry(HttpContext.Current.Request.UserHostAddress).HostName;
            }
            catch
            {
                Visits.HostName = null;
            }


            using (AirFlightContext db = new AirFlightContext())
            {
                db.Visits.Add(Visits);
                db.SaveChanges();
            }

            Sessions.Add(Session.SessionID);
        }
Exemple #2
0
    {    //переопределяем метод вызова
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var request = filterContext.HttpContext.Request;

            Visit Visits = new Visit()
            {
                VisitData = DateTime.Now,
                IP        = request.UserHostAddress,
                // HostName = Dns.GetHostEntry(request.UserHostAddress).HostName,
                //UserAgent = request.UserAgent, //временно убрал сбор статистики об агенте пользователя
                UserBrowser = request.Browser.Browser,
            };

            try
            {
                Visits.HostName = Dns.GetHostEntry(Visits.IP).HostName;
            }
            catch
            {
                Visits.HostName = null;
            }

            using (AirFlightContext db = new AirFlightContext())
            {
                db.Visits.Add(Visits);
                db.SaveChanges();
            }

            base.OnActionExecuting(filterContext);
        }
Exemple #3
0
    { //переопределяем метод вызова
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            var request = filterContext.HttpContext.Request;

            Log Logs = new Log()
            {
                VisitData = DateTime.Now,
                UserName  = HttpContext.Current.User.Identity.IsAuthenticated? HttpContext.Current.User.Identity.GetUserName():null,
                IP        = request.UserHostAddress,
                // HostName = Dns.GetHostEntry(request.UserHostAddress).HostName,
                UserBrowser = request.Browser.Browser,
                Url         = request.RawUrl
            };

            try
            {
                Logs.HostName = Dns.GetHostEntry(request.UserHostAddress).HostName;
            }
            catch
            {
                Logs.HostName = null;
            }
            using (AirFlightContext db = new AirFlightContext())
            {
                db.Logs.Add(Logs);
                db.SaveChanges();
            }

            base.OnActionExecuted(filterContext);
        }
Exemple #4
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 #5
0
        //рассылка уведомлений об открытии регистрации
        public void SendNotificationOpen()
        {
            int countsend       = 0;
            var sendnotificopen = db.Notifications.Include(f => f.Flight).Include(a => a.AspNetUser).Where(f => f.Flight.Approved == "Открыта");

            if (sendnotificopen != null)
            {
                MailAddress from = new MailAddress("*****@*****.**", "Система регистрации пассажиров");
                SmtpClient  smtp = new SmtpClient("smtp.mail.ru", 587);
                smtp.Credentials = new NetworkCredential("*****@*****.**", "3tlg8XmM");
                smtp.EnableSsl   = true;

                foreach (var email in sendnotificopen)
                {
                    int         countreg = db.RegistrationLists.Where(r => r.FlightID == email.FlightID).Count();
                    MailAddress to       = new MailAddress(email.AspNetUser.EmailSend.Trim());
                    MailMessage m        = new MailMessage(from, to)
                    {
                        // тема письма
                        Subject = "Открытие регистрации",
                        // текст письма
                        Body = "<p>Сообщаем Вам, что регистрация на рейс " + email.Flight.FlightDate.ToLongDateString() + " по маршруту: " + email.Flight.Departure + " - " +
                               email.Flight.Arrival + ", рейс №" + email.Flight.FlightNum + ", время вылета: " + email.Flight.FlightTime.ToString().Substring(0, 5) +
                               ", тип воздушного судна " + email.Flight.AirType + " была открыта. На момент открытия доступно мест для регистрации: " + (email.Flight.Number - countreg) +
                               " из " + email.Flight.Number + ". " +
                               "<p>Уведомление по данной регистрации будет удалено из системы автоматически",
                        //// письмо представляет код html
                        IsBodyHtml = true
                    };
                    // адрес smtp-сервера и порт, с которого будем отправлять письмо
                    try
                    {
                        smtp.Send(m);
                        //Удаляем запись из рассылки
                        using (AirFlightContext db = new AirFlightContext())
                        {
                            Notification delnotific = db.Notifications.Find(email.Id);
                            db.Notifications.Remove(delnotific);
                            db.SaveChanges();
                        }
                    }
                    catch
                    {
                        countsend++;
                        break;
                    }
                }
            }
        }
Exemple #6
0
        public void SendNotificationClose()
        {
            int countsend        = 0;
            var sendnotificclose = db.Notifications.Include(f => f.Flight).Include(a => a.AspNetUser).Where(f => f.Flight.Approved == "Закрыта");

            if (sendnotificclose != null)
            {
                MailAddress from = new MailAddress("*****@*****.**", "Система регистрации пассажиров");
                SmtpClient  smtp = new SmtpClient("smtp.mail.ru", 587);
                smtp.Credentials = new NetworkCredential("*****@*****.**", "3tlg8XmM");
                smtp.EnableSsl   = true;

                foreach (var email in sendnotificclose)
                {
                    int         countreg = db.RegistrationLists.Where(r => r.FlightID == email.FlightID).Count();
                    MailAddress to       = new MailAddress(email.AspNetUser.EmailSend.Trim());
                    MailMessage m        = new MailMessage(from, to)
                    {
                        // тема письма
                        Subject = "Закрытие регистрации",
                        // текст письма
                        Body = "<p>Сообщаем Вам, что регистрация на рейс " + email.Flight.FlightDate.ToLongDateString() + " по маршруту: " + email.Flight.Departure + " - " +
                               email.Flight.Arrival + ", рейс №" + email.Flight.FlightNum + ", время вылета: " + email.Flight.FlightTime.ToString().Substring(0, 5) +
                               ", тип воздушного судна " + email.Flight.AirType + " была закрыта. Регистрация пассажиров на данный рейс более не доступна. " +
                               "Если Вы так и не смогли записать своего сотрудника на рейс, пожалуйста свяжитесь с авиадиспетчером." +
                               "<p>Уведомление по данной регистрации будет удалено из системы автоматически",
                        //// письмо представляет код html
                        IsBodyHtml = true
                    };
                    // адрес smtp-сервера и порт, с которого будем отправлять письмо
                    try
                    {
                        using (AirFlightContext db = new AirFlightContext())
                        {
                            smtp.Send(m);
                            //Удаляем запись из рассылки
                            db.Notifications.Remove(db.Notifications.Find(email.Id));
                            db.SaveChanges();
                        }
                    }
                    catch
                    {
                        countsend++;
                        break;
                    }
                }
            }
        }
Exemple #7
0
        //Добавление уведомлений о рейсах
        #region NotificationsAdd
        public JsonResult NotificationsAdd(Notification Notifications)
        {
            using (AirFlightContext db = new AirFlightContext())
            {
                if (String.IsNullOrWhiteSpace(db.AspNetUsers.Find(Notifications.AspNetUserID).EmailSend))
                {
                    return(Json("NoEmail", JsonRequestBehavior.AllowGet));
                }

                if (db.Notifications.Where(u => u.AspNetUserID == Notifications.AspNetUserID && u.FlightID == Notifications.FlightID).Count() > 0)
                {
                    return(Json("Вы уже добавили этот рейс для уведомления!", JsonRequestBehavior.AllowGet));
                }


                if (ModelState.IsValid)
                {
                    db.Notifications.Add(Notifications);
                    db.SaveChanges();
                    return(Json("Ok", JsonRequestBehavior.AllowGet));
                }
            }
            return(Json("Ошибка", JsonRequestBehavior.AllowGet));
        }
Exemple #8
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 #9
0
        public JsonResult AddTmplPass(int?Tmplnum, int FlightID, int?[] selectPass, string confirm = "No")
        {
            string UId = User.Identity.GetUserId();

            //Если выборано сохранение пользователей вручную
            if (confirm == "SaveCheckPass")
            {
                using (AirFlightContext db = new AirFlightContext())
                {
                    foreach (var selectpass in selectPass)
                    {
                        RegistrationList reglist = new RegistrationList()
                        {
                            CreatorId   = UId,
                            EditorId    = UId,
                            FlightID    = FlightID,
                            PassengerID = selectpass
                        };
                        db.RegistrationLists.Add(reglist);
                        db.SaveChanges();
                    }
                    return(Json("Ok"));
                }
            }
            var tmplpass = db.TemplatesPassengers.Where(u => u.UserId == UId && u.Num == Tmplnum).ToList();

            //если количество пассажиров в шаблоне 0 возвращаем ошибку
            if (tmplpass.Count() == 0)
            {
                var result = new
                {
                    status = "ErrNoItem",
                    msg    = "В выбранном шаблоне нет пассажиров для добавления!"
                };

                return(Json(result, JsonRequestBehavior.AllowGet));
            }

            //Определяем информацию о рейсе
            var           date                 = db.Flights.FirstOrDefault(s => s.id == FlightID);
            DateTime      DF                   = date.FlightDate;
            string        dp                   = date.Departure;
            string        ar                   = date.Arrival;
            int           total                = db.RegistrationLists.Where(s => s.Flight.id == FlightID).Count();
            int           qt                   = db.Flights.Find(FlightID).Number;
            var           passenger            = db.RegistrationLists.Include(f => f.Flight);
            List <string> ConfirmPassengerList = new List <string>();
            List <int>    ConfirmPassengerId   = new List <int>();
            List <bool>   AllowCheckPassenger  = new List <bool>();
            List <string> ExistPassenger       = new List <string>();
            List <int>    CountAlowPassenger   = new List <int>();

            //считаем какое количество пользователей мы добавим по факту (то есть если количество мест для регистрации доступно 2 а мы добавляем 5 пассажиров)
            //и из них 3 уже есть на рейсе, то нам нет смысла предлагать пользователю добавить их вручную, поэтому сначала считаем
            foreach (var allow in tmplpass)
            {
                var allowaddpassenegr = db.Passengers.Find(allow.PassengerID);
                //Проверяем есть ли такой пассажир на других рейсах в выбранную дату
                var pflyinfo = passenger.Where(s => s.Flight.FlightDate == DF && s.PassengerID == allow.PassengerID);
                if (pflyinfo.Count() > 0)
                {
                    continue;
                }
                else
                {//добавляем в список только тех кого нет на рейсах на дату вылета
                    CountAlowPassenger.Add(allowaddpassenegr.id);
                }
            }

            //если количество мест для регистрации меньше чем количество добавляемых пассажиров, отправляем запрос на добавление в ручную
            if (CountAlowPassenger.Count() > qt - total && confirm == "No")
            {
                var result = new
                {
                    status = "ConfirmAdd",
                    msg    = "Добавляемое вами количество пассажиров (" + tmplpass.Count() + "), превышает доступное количество мест (" +
                             (qt - total) + ") на рейсе! Хотите выбрать пассажиров для добавления?"
                };

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            //если мы выбрали что хотим добавить пассажиров в ручную (или сразу отметили что добавлять будем из списка), то формируем список пассажиров из шаблона

            if (confirm == "Yes")
            {
                foreach (var c in tmplpass)
                {
                    var selectpassenegr = db.Passengers.Find(c.PassengerID);
                    //Проверяем есть ли такой пассажир на других рейсах в выбранную дату
                    var passengerflyinfo = passenger.Where(s => s.Flight.FlightDate == DF && s.PassengerID == c.PassengerID);
                    if (passengerflyinfo.Count() > 0)
                    {
                        //если пользователь зарегистрирован на встречных рейсах до добавляем об этом информацию
                        ConfirmPassengerList.Add(string.Format("{0} {1} {2} - зарегистрирован на рейс №{3} {4} - {5}", selectpassenegr.Surname, selectpassenegr.Name, selectpassenegr.Middlename,
                                                               passengerflyinfo.FirstOrDefault().Flight.FlightNum, passengerflyinfo.FirstOrDefault().Flight.Departure, passengerflyinfo.FirstOrDefault().Flight.Arrival));
                        //добавляем в список ID пользователя
                        ConfirmPassengerId.Add(selectpassenegr.id);
                        //добавляем в список флаг о запрете его выделения
                        AllowCheckPassenger.Add(false);
                    }
                    else
                    {
                        ConfirmPassengerList.Add(string.Format("{0} {1} {2}", selectpassenegr.Surname, selectpassenegr.Name, selectpassenegr.Middlename));
                        ConfirmPassengerId.Add(selectpassenegr.id);
                        AllowCheckPassenger.Add(true);
                    }
                }

                if (!AllowCheckPassenger.Contains(true))
                {
                    var result = new
                    {
                        status = "NoConfirmAddLis",
                        ConfirmPassengerList = ConfirmPassengerList
                    };

                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    //после того как список сформирован высылаем его пользователю
                    var result = new
                    {
                        status              = "ConfirmAddLis",
                        Count               = qt - total,
                        ConfirmPassenger    = ConfirmPassengerList,
                        ConfirmPassengerId  = ConfirmPassengerId,
                        AllowCheckPassenger = AllowCheckPassenger
                    };
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
            }


            using (AirFlightContext db = new AirFlightContext())
            {
                foreach (var listtmplpass in tmplpass)
                {
                    //Проверяем есть ли такой пассажир на рейсах в выбранную дату
                    var passconfirmadd = passenger.Where(s => s.Flight.FlightDate == DF && s.PassengerID == listtmplpass.PassengerID);
                    if (passconfirmadd.Count() > 0)
                    {
                        var passinfo = db.Passengers.Find(listtmplpass.PassengerID);
                        ExistPassenger.Add(string.Format("{0} {1} {2} - рейс №{3} {4} - {5}", passinfo.Surname, passinfo.Name, passinfo.Middlename,
                                                         passconfirmadd.FirstOrDefault().Flight.FlightNum, passconfirmadd.FirstOrDefault().Flight.Departure, passconfirmadd.FirstOrDefault().Flight.Arrival));
                        continue;
                    }
                    RegistrationList reglist = new RegistrationList()
                    {
                        CreatorId   = UId,
                        EditorId    = UId,
                        FlightID    = FlightID,
                        PassengerID = listtmplpass.PassengerID
                    };

                    db.RegistrationLists.Add(reglist);
                    db.SaveChanges();
                }

                if (ExistPassenger.Count() > 0)
                {
                    var result = new
                    {
                        status         = "ErrAdd",
                        ExistPassenger = ExistPassenger
                    };
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json("Ok", JsonRequestBehavior.AllowGet));
                }
            }
        }