// Отчет "ГРАФИК РАБОТЫ"
        public async Task <ActionResult> Details3(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            //получение данных сотрудника
            Sotrs sotrs = await db.Sotrs.FindAsync(id);

            if (sotrs == null)
            {
                return(HttpNotFound());
            }
            //Получение графика работы сотрудника
            var wk = db.Work_Schedule.Where(p => p.Sotr_ID == id).OrderBy(p => p.DaysOfWeek.ID_Day).ToList();
            //Получение данных штатного сотрудника
            var pos = db.Posit_Responsibilities.Where(p => p.Sotr_ID == id).FirstOrDefault();

            if (pos != null)
            {
                //Должность
                ViewBag.posit = pos.Positions.Naim_Posit;
            }
            else
            {
                //Дефолтные значения
                ViewBag.posit = "Не назначено";
            }
            //Добавление в виртуальную таблицу
            ViewBag.wk = wk;
            return(View(sotrs));
        }
        public ActionResult Settings(Sotrs sotrs)
        {
            if (User.Identity.IsAuthenticated)
            {
                //Если картинка загружена
                if (sotrs.ImageUpload != null)
                {
                    string filename  = Path.GetFileNameWithoutExtension(sotrs.ImageUpload.FileName);
                    string extension = Path.GetExtension(sotrs.ImageUpload.FileName);
                    filename    = filename + DateTime.Now.ToString("yymmssfff") + extension;
                    sotrs.Photo = "/Content/Photo/st/" + filename;
                    sotrs.ImageUpload.SaveAs(Path.Combine(Server.MapPath("~/Content/Photo/st/"), filename));
                }
                try
                {
                    //Обновление данных
                    //Изменение данных
                    sotrs.Address           = Shifrovanie.Encryption(sotrs.Address);
                    db.Entry(sotrs).State   = EntityState.Modified;
                    Session["FIO"]          = sotrs.Surname_Sot + " " + sotrs.Name_Sot + " " + sotrs.Petronumic_Sot;
                    Session["Email"]        = sotrs.Email;
                    Session["Num_Phone"]    = sotrs.Num_Phone;
                    Session["Address"]      = sotrs.Address;
                    Session["Day_Of_Birth"] = sotrs.Day_Of_Birth;
                    Session["Photo"]        = sotrs.Photo;
                    Session["Dolj"]         = "Статус: Гость";
                    var s = db.Sotrs.Include(sot => sot.Accounts).Where(sot => sot.Login_Acc == User.Identity.Name).FirstOrDefault();
                    Session["Guest"] = s.Guest;
                    //Если не гость, не заблокирован, не уволен
                    if ((bool)Session["Guest"] == false && s.Accounts.Block == false && s.fired == false)
                    {
                        Session["Manip_Sotrs"]      = s.Accounts.Roles.Manip_Sotrs;
                        Session["Manip_Roles"]      = s.Accounts.Roles.Manip_Roles;
                        Session["Manip_Tests"]      = s.Accounts.Roles.Manip_Tests;
                        Session["Manip_Department"] = s.Accounts.Roles.Manip_Department;
                    }
                    //Сохранение
                    db.SaveChanges();
                    //сообщение об изменении данных
                    ViewBag.Suc    = true;
                    ViewBag.SucMes = "Ваши данные аккаунта успешно изменены";
                    return(View(sotrs));
                }

                catch
                {
                    //список аккаунтов
                    ViewBag.Login_Acc = new SelectList(db.Accounts, "Login", "Password", sotrs.Login_Acc);
                    return(View(sotrs));
                }
            }
            else
            {
                return(Redirect("/Error/NotAuth"));
            }
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            if ((bool)Session["Manip_Sotrs"] == true && Session["Manip_Sotrs"] != null)
            {
                Sotrs sotrs = await db.Sotrs.FindAsync(id);

                //Удаление
                db.Sotrs.Remove(sotrs);
                //Сохранение
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            else
            {
                return(Redirect("/Error/NotRight"));
            }
        }
        public async Task <ActionResult> DeleteConfirmedLog(int id)
        {
            if ((bool)Session["Manip_Sotrs"] == true && Session["Manip_Sotrs"] != null)
            {
                Sotrs sotrs = await db.Sotrs.FindAsync(id);

                //Логическое удаление
                sotrs.Logical_Delete  = true;
                db.Entry(sotrs).State = EntityState.Modified;
                //Сохранение
                await db.SaveChangesAsync();

                EmployeesHub.BroadcastData();
                return(RedirectToAction("Index"));
            }
            else
            {
                return(Redirect("/Error/NotRight"));
            }
        }
 public ActionResult Settings()
 {
     if (User.Identity.IsAuthenticated)
     {
         ViewBag.Suc    = false;
         ViewBag.SucMes = "";
         //получение данных аккаунта
         var   s     = db.Sotrs.Where(sot => sot.Login_Acc == User.Identity.Name).FirstOrDefault();
         Sotrs sotrs = new Sotrs();
         sotrs         = db.Sotrs.Find(s.ID_Sotr);
         sotrs.Address = Shifrovanie.Decryption(sotrs.Address);
         if (sotrs == null)
         {
             //404 ошибка
             return(HttpNotFound());
         }
         return(View(sotrs));
     }
     else
     {
         return(Redirect("/Error/NotAuth"));
     }
 }
 public ActionResult AddOrEdit(int id = 0)
 {
     if ((bool)Session["Manip_Sotrs"] == true && Session["Manip_Sotrs"] != null)
     {
         Sotrs sotrs = new Sotrs();
         //Если ключ = 0
         if (id == 0)
         {
             //Список аккаунтов
             ViewBag.Login_Acc = new SelectList(db.Accounts.Where(a => a.Block == false), "Login", "Login");
             return(View(sotrs));
         }
         else
         {
             //Поиск по ключу
             sotrs = db.Sotrs.Find(id);
             if (sotrs == null)
             {
                 //404 ошибка
                 return(HttpNotFound());
             }
             sotrs.Address = Shifrovanie.Decryption(sotrs.Address);
             //Список аккаунтов
             ViewBag.Login_Acc = new SelectList(db.Accounts.Where(a => a.Block == false), "Login", "Login", sotrs.Login_Acc);
             if (sotrs == null)
             {
                 //404 ошибка
                 return(HttpNotFound());
             }
             return(View(sotrs));
         }
     }
     else
     {
         return(Redirect("/Error/NotRight"));
     }
 }
        //Отчет "ШАБЛОН ЛИЧНОГО ДЕЛА"
        public async Task <ActionResult> Details(int?id)
        {
            if ((bool)Session["Manip_Sotrs"] == true && Session["Manip_Sotrs"] != null)
            {
                if (id == null)
                {
                    //400 ошибка
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                //поиск по ключу
                Sotrs sotrs = await db.Sotrs.FindAsync(id);

                if (sotrs == null)
                {
                    //404 ошибка
                    return(HttpNotFound());
                }
                return(View(sotrs));
            }
            else
            {
                return(Redirect("/Error/NotRight"));
            }
        }
 public ActionResult AddOrEdit(Sotrs sotrs)
 {
     if ((bool)Session["Manip_Sotrs"] == true && Session["Manip_Sotrs"] != null)
     {
         if (sotrs.Guest == false && sotrs.Date_of_adoption == null)
         {
             //Если значение гость = false, необходимо указать дату принятия
             ViewBag.Login_Acc = new SelectList(db.Accounts, "Login", "Login", sotrs.Login_Acc);
             ModelState.AddModelError("Date_of_adoption", "Необходимо указать дату приема данного сотрудника");
             return(View(sotrs));
         }
         SqlCommand command = new SqlCommand("", Program.SqlConnection);
         //Запрос на получение возраста
         command.CommandText = "select Datediff(year, '" + sotrs.Day_Of_Birth + "', getdate())";
         int?voz = 0;
         Program.SqlConnection.Open();
         //Получение позраста
         voz = (int)command.ExecuteScalar();
         Program.SqlConnection.Close();
         if (voz < 16)
         {
             //Сообщение о возрастных ограничениях
             ViewBag.Login_Acc = new SelectList(db.Accounts.Where(a => a.Block == false), "Login", "Login", sotrs.Login_Acc);
             ModelState.AddModelError("Day_Of_Birth", "Возрастные ограничения 18+");
             return(View(sotrs));
         }
         if (sotrs.ImageUpload != null)
         {
             //Загрузка фото пользователя
             string filename  = Path.GetFileNameWithoutExtension(sotrs.ImageUpload.FileName);
             string extension = Path.GetExtension(sotrs.ImageUpload.FileName);
             filename    = filename + DateTime.Now.ToString("yymmssfff") + extension;
             sotrs.Photo = "/Content/Photo/st/" + filename;
             sotrs.ImageUpload.SaveAs(Path.Combine(Server.MapPath("~/Content/Photo/st/"), filename));
         }
         if (sotrs.ID_Sotr.Equals(0))
         {
             try
             {
                 //Добавление пользователя
                 sotrs.Address = Shifrovanie.Encryption(sotrs.Address);
                 db.Sotrs.Add(sotrs);
                 //Сохранение
                 db.SaveChanges();
                 EmployeesHub.BroadcastData();
                 return(Redirect(Session["perehod"].ToString()));
             }
             catch
             {
                 //Список аккаунтов
                 ViewBag.Login_Acc = new SelectList(db.Accounts.Where(a => a.Block == false), "Login", "Login", sotrs.Login_Acc);
                 return(View(sotrs));
             }
         }
         else
         {
             try
             {
                 //Изменение данных
                 sotrs.Address         = Shifrovanie.Encryption(sotrs.Address);
                 db.Entry(sotrs).State = EntityState.Modified;
                 //Сохранение данных
                 db.SaveChanges();
                 //Список аккаунтов
                 ViewBag.Login_Acc = new SelectList(db.Accounts.Where(a => a.Block == false), "Login", "Login", sotrs.Login_Acc);
                 EmployeesHub.BroadcastData();
                 return(Redirect(Session["perehod"].ToString()));
             }
             catch
             {
                 //Список аккаунтов
                 ViewBag.Login_Acc = new SelectList(db.Accounts.Where(a => a.Block == false), "Login", "Login", sotrs.Login_Acc);
                 return(View(sotrs));
             }
         }
     }
     else
     {
         return(Redirect("/Error/NotRight"));
     }
 }
        // Отчет "ПОЛНЫЙ ОТЧЕТ ПО СОТРУДНИКУ"
        public async Task <ActionResult> Details2(int?id)
        {
            if ((bool)Session["Manip_Sotrs"] == true && Session["Manip_Sotrs"] != null)
            {
                if (id == null)
                {
                    //400 ошибка
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                //поиск по ключу
                Sotrs sotrs = await db.Sotrs.FindAsync(id);

                if (sotrs == null)
                {
                    //404 ошибка
                    return(HttpNotFound());
                }
                //Получение данных штатного сотрудника
                var pos = db.Posit_Responsibilities.Where(p => p.Sotr_ID == id).FirstOrDefault();
                if (pos != null)
                {
                    //Отдел
                    ViewBag.dep = pos.Positions.Departments.Naim_Depart;
                    //Должность
                    ViewBag.posit = pos.Positions.Naim_Posit;
                    //Ставка
                    ViewBag.rate = pos.Rates.Rate;
                }
                else
                {
                    //Дефолтные значения
                    ViewBag.dep   = "Не назначено";
                    ViewBag.posit = "Не назначено";
                    ViewBag.rate  = "Не назначено";
                }
                if (pos != null)
                {
                    //Данные испытательного срока
                    var isp = db.Isp_Sroki.Where(p => p.Pos_Res_ID == pos.ID_Pos_Res).ToList();
                    if (isp != null)
                    {
                        ViewBag.isp = isp.ToList();
                    }
                    else
                    {
                        ViewBag.isp = null;
                    }
                }
                else
                {
                    ViewBag.isp = null;
                }
                //Данные реестра документов сотрудника
                var doc = db.Sbor_Docum.Where(p => p.Sotr_ID == id).ToList();
                ViewBag.doc = doc;
                var step = db.Steps.Where(p => p.Sotr_ID == id).ToList();
                ViewBag.step = step;
                return(View(sotrs));
            }
            else
            {
                return(Redirect("/Error/NotRight"));
            }
        }