public ActionResult Edit([Bind(Include = "EMail, Name, Surname, Telephone")] Employees empl) { if (Session["EmployeeID"] != null) { if (empl.EMail != null && empl.Name != null && empl.Surname != null && empl.Telephone != null) { using (TimesheetDBEntities ctx = new TimesheetDBEntities()) { int employeeID = (int)Session["EmployeeID"]; var foundEmpl = ctx.Employees.Where(x => x.EmployeeID == employeeID).FirstOrDefault(); string typedEmail = empl.EMail; if (typedEmail == ctx.Employees.Where(x => x.EMail == typedEmail && x.EmployeeID != employeeID).Select(x => x.EMail).FirstOrDefault()) { ViewData["Message"] = "Podany e-mail jest już zajęty"; } else { foundEmpl.Name = empl.Name; foundEmpl.Surname = empl.Surname; foundEmpl.Telephone = empl.Telephone; foundEmpl.EMail = empl.EMail; ctx.Entry(foundEmpl).State = EntityState.Modified; ctx.SaveChanges(); ViewData["Message"] = "OK"; } } } return(View(empl)); } return(RedirectToAction("", "Home")); }
private void PopulateProjectStatesList(object selectedState = null) { var ctx = new TimesheetDBEntities(); var projectStates = from j in ctx.ProjectStates select j; ViewBag.ProjectStateID = new SelectList(projectStates, "ProjectStateID", "ProjectStateName", selectedState); }
public ActionResult ChangePassword(string[] pass) //table of passwords { if (pass[0] != "" && pass[1] != "" && pass[2] != "") { if (Session["EmployeeID"] != null) { using (TimesheetDBEntities ctx = new TimesheetDBEntities()) { int employeeID = (int)Session["EmployeeID"]; var foundEmployee = ctx.Employees.Where(x => x.EmployeeID == employeeID).FirstOrDefault(); //employee byte[] oldPassword = Encoding.Default.GetBytes(pass[0]); //employee old pass using (var sha256 = SHA256.Create()) { byte[] hashOldPass = sha256.ComputeHash(oldPassword); //256-bits employee pass string hashOldPassHex = BitConverter.ToString(hashOldPass).Replace("-", string.Empty); //64 chars hash pass if (hashOldPassHex == foundEmployee.Password) //user typed proper old pass { if (pass[1] == pass[2]) //user typed twice the same new pass { byte[] newPass = Encoding.Default.GetBytes(pass[1]); byte[] hashNewPass = sha256.ComputeHash(newPass); string hashNewPassHex = BitConverter.ToString(hashNewPass).Replace("-", string.Empty); foundEmployee.Password = hashNewPassHex; ctx.Entry(foundEmployee).State = EntityState.Modified; ctx.SaveChanges(); ViewData["Message"] = "OK"; } else { ViewData["Message"] = "Podane hasła nie zgadzają się!"; //ModelState.AddModelError("", "Podane hasła nie zgadzają się!"); } } else { ViewData["Message"] = "Podane stare hasło jest nieprawidłowe!"; //ModelState.AddModelError("", "Podane stare hasło jest nieprawidłowe!"); } } } } else { return(RedirectToAction("", "Home")); } } else { ViewData["Message"] = "Przynajmniej jedno z wymaganych pól jest nieuzupełnione!"; //ModelState.AddModelError("", "Przynajmniej jedno z wymaganych pól jest nieuzupełnione!"); } return(View()); }
public ActionResult Login(string email, string passwd) { using (TimesheetDBEntities ctx = new TimesheetDBEntities()) { byte[] pass = Encoding.Default.GetBytes(passwd); //employee pass in bytes using (var sha256 = SHA256.Create()) { byte[] hashPass = sha256.ComputeHash(pass); //256-bits employee pass string hashPassHex = BitConverter.ToString(hashPass).Replace("-", string.Empty); //64 chars hash pass //get login and pass from DB var empl = ctx.Employees.Where(e => e.EMail == email).FirstOrDefault(); if (empl != null) { if (empl.Password == hashPassHex) //user typed proper data { if (empl.LoginNo < incorrectPasswordNo) { Session["EmployeeID"] = empl.EmployeeID; Session["JobPosition"] = empl.JobPositionID; Session["NameSurname"] = empl.Name.ToString() + " " + empl.Surname.ToString(); empl.LastLogin = DateTime.Now; empl.LoginNo = 0; // 0 the counter Session["PleaseLogin"] = null; Session["Login"] = null; } else { Session["Login"] = "******"; return(RedirectToAction("", "Home")); } } else //user typed incorrect password { if (empl.LoginNo < incorrectPasswordNo) { empl.LoginNo += 1;//add one because of failed login attempt } else { Session["Login"] = "******"; return(RedirectToAction("", "Home")); } } ctx.Entry(empl).State = EntityState.Modified; ctx.SaveChanges(); } } } return(RedirectToAction("", "Home")); }
private void PopulateSuperiorsList(object selectedEmployee = null) { var ctx = new TimesheetDBEntities(); var employees = from j in ctx.Employees where j.EmployeeStateID == 1 || j.EmployeeStateID == 2 select new { EmployeeID = j.EmployeeID, Employee = j.Name + " " + j.Surname + " (" + j.EMail + ")" }; ViewBag.SuperiorID = new SelectList(employees, "EmployeeID", "Employee", selectedEmployee); }
public ActionResult Edit() { if (Session["EmployeeID"] != null) //user is logged in { using (TimesheetDBEntities ctx = new TimesheetDBEntities()) { int employeeID = (int)Session["EmployeeID"]; Employees empl = ctx.Employees.Where(x => x.EmployeeID == employeeID).FirstOrDefault(); if (empl == null) { return(HttpNotFound()); } return(View(empl)); } } else { return(RedirectToAction("", "Home")); } }
public ActionResult ChangeTimesheet(string timesheetID) { if (Session["EmployeeID"] != null) { //session TimesheetDBEntities ctx = new TimesheetDBEntities(); int timesheetIdent = Int32.Parse(timesheetID); Session["timesheetID"] = timesheetIdent; int timesheetStateID = ctx.Timesheets.Where(x => x.TimesheetID == timesheetIdent).Select(x => x.TimesheetStateID).FirstOrDefault(); if (timesheetStateID > 0) { if (timesheetStateID == 1) { return(RedirectToAction("Current", "Timesheet")); } else if (timesheetStateID == 5) { return(RedirectToAction("Disapproved", "Timesheet")); } } } return(RedirectToAction("", "Home")); }
public ActionResult Overview() { if (Session["EmployeeID"] == null) { Session["PleaseLogin"] = true; return(RedirectToAction("", "Home")); } else { var employeeID = (int)Session["EmployeeID"]; if ((int)Session["JobPosition"] == 1) { var entities = new TimesheetDBEntities(); return(View(entities.Projects.OrderBy(p => p.ProjectStateID).ToList())); } else { //list of projectsIDs Session["EmployeeID"] is assigned var projectsIDs = ctx.ProjectMembers.Where(x => x.EmployeeID == employeeID).Select(x => new { x.ProjectID, x.ProjectMemberID }).ToList(); Projects project; string name = string.Empty; List <string> projectOverview = new List <string>(); List <int> timesheetIDS; List <Tasks> tasksList; int taskCount = 0; decimal hoursworked = 0M; foreach (var item in projectsIDs) { project = ctx.Projects.Where(x => x.ProjectID == item.ProjectID).FirstOrDefault(); if (project != null) { //Name | Start | Finish | Project state name | Superior name | Numer of people that works in this project | Your part projectOverview.Add(project.Name); projectOverview.Add(project.Start.Date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)); name = project.Finish.ToString(); name = name == null ? "nieokreślono" : name.Split(' ').ElementAt(0); projectOverview.Add(name); name = ctx.ProjectStates.Where(x => x.ProjectStateID == project.ProjectStateID).Select(x => x.ProjectStateName).FirstOrDefault(); if (name != null) { projectOverview.Add(name); } name = ctx.Employees.Where(x => x.EmployeeID == project.SuperiorID).Select(x => x.Name).FirstOrDefault(); name += " " + ctx.Employees.Where(x => x.EmployeeID == project.SuperiorID).Select(x => x.Surname).FirstOrDefault(); if (name != null) { projectOverview.Add(name); } name = ctx.ProjectMembers.Where(x => x.ProjectID == project.ProjectID).Count().ToString(); if (name != null) { projectOverview.Add(name); } //take employee all timesheetsIDs timesheetIDS = ctx.Timesheets.Where(x => x.ProjectMemberID == item.ProjectMemberID).Select(x => x.TimesheetID).ToList(); foreach (var item2 in timesheetIDS) { tasksList = ctx.Tasks.Where(x => x.TimesheetID == item2).ToList(); taskCount += tasksList.Count(); foreach (var item3 in tasksList) { hoursworked += item3.MondayHours + item3.TuesdayHours + item3.WednesdayHours + item3.ThursdayHours + item3.FridayHours + item3.SaturdayHours + item3.SundayHours; } } if (taskCount == 1) { name = taskCount + " zadanie/"; } else if (taskCount >= 2 && taskCount <= 4) { name = taskCount + " zadania/"; } else { name = taskCount + " zadań/"; } projectOverview.Add(name + hoursworked.ToString() + "h"); taskCount = 0; hoursworked = 0.0M; } } ViewBag.projectOverview = projectOverview; return(View()); } } }
public ActionResult SaveTimesheet(string[] data) { //projectName is the identyfier of the project! //string -> int bool properData = false; //data null or proper condition if (Session["EmployeeID"] != null) { if (data == null) { properData = true; } else if (data.Length % 10 == 0) { properData = true; } if (Session["timesheetID"] != null && properData == true) { List <long> taskIDFromTimesheet = new List <long>(); //int projectID = Int32.Parse(Session["projectID"].ToString()); int employeeID = Int32.Parse(Session["EmployeeID"].ToString()); int timesheetID = Int32.Parse(Session["TimesheetID"].ToString()); using (TimesheetDBEntities ctx = new TimesheetDBEntities()) { //var projectMemberID = ctx.ProjectMembers.Where(x => x.ProjectID == projectID && x.EmployeeID == employeeID).Select(x => x.ProjectMemberID).FirstOrDefault(); // if (projectMemberID != null) //{ //where start & finish && dateTimeNow beetween var dateTimeNow = DateTime.Now.Date; //var timesheetID = ctx.Timesheets.Where(x => x.ProjectMemberID == projectMemberID && x.TimesheetStateID == 1).Select(x => x.TimesheetID).FirstOrDefault(); if (timesheetID > 0) //timesheetID { int taskID = 0; Tasks task; var tasks = ctx.Tasks.Where(x => x.TimesheetID == timesheetID); //can be no data if (data != null) { for (int i = 0; i < data.Length; i += 10) { taskID = Int32.Parse(data[i]); taskIDFromTimesheet.Add(taskID); if (taskID == 0) //new task { task = new Tasks(); task.TimesheetID = timesheetID; task.TaskName = data[i + 1]; task.MondayHours = Decimal.Parse(data[i + 2]); task.TuesdayHours = Decimal.Parse(data[i + 3]); task.WednesdayHours = Decimal.Parse(data[i + 4]); task.ThursdayHours = Decimal.Parse(data[i + 5]); task.FridayHours = Decimal.Parse(data[i + 6]); task.SaturdayHours = Decimal.Parse(data[i + 7]); task.SundayHours = Decimal.Parse(data[i + 8]); task.Comment = data[i + 9]; task.LastEditedBy = employeeID; task.LastEditDate = DateTime.Now; task.CreatedBy = employeeID; task.CreationDate = DateTime.Now; ctx.Tasks.Add(task); } else //existing task { task = tasks.Where(x => x.TaskID == taskID).FirstOrDefault();//ctx.Tasks.Where(x => x.TaskID == taskID).FirstOrDefault(); task.TaskName = data[i + 1]; task.MondayHours = Decimal.Parse(data[i + 2]); task.TuesdayHours = Decimal.Parse(data[i + 3]); task.WednesdayHours = Decimal.Parse(data[i + 4]); task.ThursdayHours = Decimal.Parse(data[i + 5]); task.FridayHours = Decimal.Parse(data[i + 6]); task.SaturdayHours = Decimal.Parse(data[i + 7]); task.SundayHours = Decimal.Parse(data[i + 8]); task.Comment = data[i + 9]; task.LastEditedBy = employeeID; task.LastEditDate = DateTime.Now; ctx.Entry(task).State = EntityState.Modified; } } } //Remove from db tasks which users has deleted //tasks -> list of tasks from DB //taskIDFromTimesheet foreach (var item in tasks) { if (!taskIDFromTimesheet.Contains(item.TaskID)) { ctx.Entry(item).State = EntityState.Deleted; } } } //} ctx.SaveChanges(); TempData["SaveChanges"] = "OK"; int timesheetStateID = ctx.Timesheets.Where(x => x.TimesheetID == timesheetID).Select(x => x.TimesheetStateID).FirstOrDefault(); if (timesheetStateID > 0) { if (timesheetStateID == 1) { return(RedirectToAction("Current", "Timesheet")); } else if (timesheetStateID == 5) { return(RedirectToAction("Disapproved", "Timesheet")); } } } } } return(RedirectToAction("", "Home")); }
public ActionResult CurrentOrDisapproved(int timesheetStateID) { Session["tasks"] = null; if (Session["CurrentOrDisapproved"] != null && Session["CurrentOrDisapproved"].ToString() != timesheetStateID.ToString()) { Session["timesheetID"] = null; } Session["CurrentOrDisapproved"] = timesheetStateID; List <SelectListItem> TimesheetIDNameProject = new List <SelectListItem>(); if (Session["EmployeeID"] != null) { TimesheetDBEntities ctx = new TimesheetDBEntities(); //person logged in ID int loggedIn = (int)Session["EmployeeID"]; //list of project IDs where person is assigned var listOfProjectAndProjectMembersIDs = ctx.ProjectMembers.Include(x => x.Projects).Where(x => x.EmployeeID == loggedIn).OrderBy(x => x.ProjectMemberID).Select(x => new { x.ProjectID, x.ProjectMemberID }).ToList(); if (listOfProjectAndProjectMembersIDs.Count() != 0) //if user is assigned to somewhere { foreach (var item in listOfProjectAndProjectMembersIDs) { var projectNames = ctx.Projects.Where(x => x.ProjectID == item.ProjectID).Select(x => x.Name).FirstOrDefault(); //if loggedIn is assigned to project... if (projectNames != null) { var timesheets = ctx.Timesheets.Where(x => x.ProjectMemberID == item.ProjectMemberID && x.TimesheetStateID == timesheetStateID); if (timesheets != null) { foreach (var item2 in timesheets) { if (Session["timesheetID"] != null) { if (Session["timesheetID"].ToString() == item2.TimesheetID.ToString()) { TimesheetIDNameProject.Insert(0, (new SelectListItem { Text = projectNames.ToString() + " (" + item2.Start.Date.ToString("yyyy-MM-dd") + " - " + item2.Finish.Date.ToString("yyyy-MM-dd") + ")", //Name Value = item2.TimesheetID.ToString() //ProjectID })); } else { TimesheetIDNameProject.Add(new SelectListItem { Text = projectNames.ToString() + " (" + item2.Start.Date.ToString("yyyy-MM-dd") + " - " + item2.Finish.Date.ToString("yyyy-MM-dd") + ")", //Name Value = item2.TimesheetID.ToString() //ProjectID }); } } else { Session["timesheetID"] = item2.TimesheetID.ToString(); TimesheetIDNameProject.Add(new SelectListItem { Text = projectNames.ToString() + " (" + item2.Start.Date.ToString("yyyy-MM-dd") + " - " + item2.Finish.Date.ToString("yyyy-MM-dd") + ")", //Name Value = item2.TimesheetID.ToString() //ProjectID }); } } } } } if (TimesheetIDNameProject.Count() == 0) { return(View(TimesheetIDNameProject)); } //take first from list (ProjectID) int selectedTimesheetID = Int32.Parse(TimesheetIDNameProject.First().Value); //take proper ProjectMemberID -> ProjectID && (int)Session["EmployeeID"] //var projectMemberID = ctx.ProjectMembers.Where(x => x.ProjectID == selectedprojectID && x.EmployeeID == loggedIn).Select(x => x.ProjectMemberID).FirstOrDefault(); //take proper Timesheet having ProjectMemberID //if (projectMemberID > 0) //{ //info about the projecy var timesheet = ctx.Timesheets.Where(x => x.TimesheetID == selectedTimesheetID).Select(x => new { x.TimesheetID, x.Start, x.Finish, x.TimesheetStateID, x.Comment }).FirstOrDefault(); //var timesheet = ctx.Timesheets.Where(x => x.ProjectMemberID == projectMemberID && x.TimesheetStateID == 1).Select(x => new { x.TimesheetID, x.Start, x.Finish, x.TimesheetStateID }).FirstOrDefault(); if (timesheet != null) { //Session["TimesheetID"] = timesheet.TimesheetID; string timesheetStateName = ctx.TimesheetStates.Where(x => x.TimesheetStateID == timesheet.TimesheetStateID).Select(x => x.TimesheetStateName).FirstOrDefault(); if (timesheetStateName != null) { ViewBag.projectName = (TimesheetIDNameProject.First().Text).Split(new string[] { " (" }, StringSplitOptions.None)[0]; ViewBag.timesheetStart = timesheet.Start.ToString("yyyy-MM-dd"); ViewBag.timesheetFinish = timesheet.Finish.Date.ToString("yyyy-MM-dd"); ViewBag.timesheetStateName = timesheetStateName; if (timesheet.TimesheetStateID == 1) { ViewBag.timesheetComment = null; } else if (timesheet.TimesheetStateID == 5) { ViewBag.timesheetComment = timesheet.Comment == "" ? "Nie podano powodu odrzucenia" : timesheet.Comment; } } //list of tasks List <Tasks> tasks = ctx.Tasks.Where(x => x.TimesheetID == timesheet.TimesheetID).ToList(); Session["tasks"] = tasks; //general hours summary decimal MH = 0; decimal TuH = 0; decimal WH = 0; decimal ThH = 0; decimal FH = 0; decimal SaH = 0; decimal SuH = 0; decimal allH = 0; foreach (var item in tasks) { MH += item.MondayHours; TuH += item.TuesdayHours; WH += item.WednesdayHours; ThH += item.ThursdayHours; FH += item.FridayHours; SaH += item.SaturdayHours; SuH += item.SundayHours; } allH = MH + TuH + WH + ThH + FH + SaH + SuH; ViewData["0"] = MH.ToString(); ViewData["1"] = TuH.ToString(); ViewData["2"] = WH.ToString(); ViewData["3"] = ThH.ToString(); ViewData["4"] = FH.ToString(); ViewData["5"] = SaH.ToString(); ViewData["6"] = SuH.ToString(); ViewBag.allH = allH.ToString(); } //} return(View(TimesheetIDNameProject)); } } return(View(TimesheetIDNameProject)); }