Beispiel #1
0
 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);
        }
Beispiel #3
0
        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());
        }
Beispiel #4
0
        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);
        }
Beispiel #6
0
 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));
        }