Esempio n. 1
0
        public ActionResult PostSheet(TimeSheetModel timeSheet)
        {
            var date         = DateTime.ParseExact(timeSheet.Date, "MM/dd/yyyy", CultureInfo.CurrentCulture);
            var newTimeSheet = new TimeSheet
            {
                State           = TimeSheetState.PendingApproval,
                Title           = $"{WebUser.Name}\'s TimeSheet for  {date.Date.ToShortDateString()}",
                Date            = date,
                TotalHours      = timeSheet.Rows.Sum(r => r.Effort),
                Comments        = timeSheet.Comments,
                CreatedByUserId = WebUser.Id
            };

            _timeSheetRepository.Create(newTimeSheet);

            foreach (var lineItem in timeSheet.Rows)
            {
                var newTimeSheetLineItem = new TimeSheetLineItem
                {
                    TimeSheetId = newTimeSheet.Id,
                    ProjectId   = lineItem.ProjectId,
                    TaskSummary = lineItem.TaskSummary,
                    Effort      = lineItem.Effort,
                    Comments    = lineItem.Comments,
                    WorkType    = lineItem.WorkType
                };

                _timeSheetLineItemRepository.Create(newTimeSheetLineItem);
            }

            _unitOfWork.Commit();

            return(Json(true));
        }
Esempio n. 2
0
        public ApiTimesheetLineItemModel(TimeSheetLineItem lineItem)
        {
            Id          = lineItem.Id;
            TimeSheetId = lineItem.TimeSheetId;

            ProjectId = lineItem.ProjectId;
            if (lineItem.Project != null)
            {
                ProjectName = lineItem.Project.Title;
            }

            TaskId = lineItem.TaskId;
            if (lineItem.Task != null)
            {
                TaskTitle = lineItem.Task.Title;
            }

            TaskSummary = lineItem.TaskSummary;
            Effort      = lineItem.Effort;
            Comments    = lineItem.Comments;
            WorkType    = lineItem.WorkType;
            if (lineItem.TimeSheet != null)
            {
                CreatedByUserId = lineItem.TimeSheet.CreatedByUserId;
                if (lineItem.TimeSheet.CreatedByUser?.Person != null)
                {
                    CreatedByUser = lineItem.TimeSheet.CreatedByUser.Person.Name;
                }
            }
        }
        protected void gvTimeSheet_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            TimeSheet ts       = (TimeSheet)ViewState["TimeSheet"];
            var       dt       = e.NewValues[0];
            var       worktime = e.NewValues[1];

            try
            {
                ts.TimeSheetLineItem.ToList()[e.RowIndex].TimeSheetDate = DateTime.Parse(dt.ToString());
                ts.TimeSheetLineItem.ToList()[e.RowIndex].WorkTime      = int.Parse(worktime.ToString());

                TimeSheetLineItem timeSheetLineItem = new TimeSheetLineItem();

                ts.TimeSheetLineItem.Add(timeSheetLineItem);

                gvTimeSheet.EditIndex = ts.TimeSheetLineItem.Count - 1;

                ViewState.Add("TimeSheet", ts);

                CalculateTime(ts.TimeSheetLineItem.ToList());

                gvTimeSheet.DataSource = ts.TimeSheetLineItem;
                gvTimeSheet.DataBind();

                ((TextBox)gvTimeSheet.Rows[ts.TimeSheetLineItem.Count - 1].FindControl("txtTimeSheetDate")).Text = "";
                ((TextBox)gvTimeSheet.Rows[ts.TimeSheetLineItem.Count - 1].FindControl("txtWorkTime")).Text      = "";
            }
            catch (Exception)
            {
                Response.Write("Invalid");
            }
        }
Esempio n. 4
0
        public int InsertTimeSheet(TimeSheet timeSheet)
        {
            TimeSheet ts = dB.TimeSheets.Create();

            ts.LastUpdateDate    = timeSheet.LastUpdateDate;
            ts.Rate              = timeSheet.Rate;
            ts.UserID            = timeSheet.UserID;
            ts.Cost              = timeSheet.Cost;
            ts.Description       = timeSheet.Description;
            ts.TimeSheetLineItem = new List <TimeSheetLineItem>();

            foreach (var li in timeSheet.TimeSheetLineItem)
            {
                if (li.WorkTime != 0)
                {
                    TimeSheetLineItem timeSheetLineItem = dB.TimeSheetLineItems.Create();
                    timeSheetLineItem.LastUpdateDate = DateTime.Now;
                    timeSheetLineItem.WorkTime       = li.WorkTime;
                    timeSheetLineItem.TimeSheetDate  = li.TimeSheetDate;
                    timeSheetLineItem.TimeSheet      = ts;
                    ts.TimeSheetLineItem.Add(timeSheetLineItem);
                }
            }
            dB.TimeSheets.Add(ts);

            return(dB.SaveChanges());
        }
Esempio n. 5
0
        public int InsertLineItem(TimeSheetLineItem lineItem)
        {
            TimeSheetLineItem tl = dB.TimeSheetLineItems.Create();

            tl.TimeSheetDate  = lineItem.TimeSheetDate;
            tl.WorkTime       = lineItem.WorkTime;
            tl.LastUpdateDate = lineItem.LastUpdateDate;
            tl.TimeSheet      = lineItem.TimeSheet;

            dB.TimeSheetLineItems.Add(tl);

            return(dB.SaveChanges());
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["user"] == null)
            {
                Response.Redirect("Login.aspx");
            }

            if (!Page.IsPostBack)
            {
                if (Request.QueryString["id"] != null && Request.QueryString["id"].ToString() != "")
                {
                    lblUserDetail.Text = "Welcome " + Session["user"];
                    int id = int.Parse(Request.QueryString["id"].ToString());
                    timeSheet = timeEntry.GetTimeSheetById(id);
                    ViewState.Add("TimeSheet", timeSheet);

                    gvTimeSheet.DataSource = timeSheet.TimeSheetLineItem;
                    gvTimeSheet.DataBind();

                    txtDescription.Text    = timeSheet.Description;
                    txtDescription.Enabled = false;
                    txtRate.Text           = timeSheet.Rate.ToString();
                    txtRate.Enabled        = false;
                    CalculateTime(timeSheet.TimeSheetLineItem.ToList());
                    txtTotalCost.Text = timeSheet.Cost.ToString();
                    btnSave.Visible   = false;
                }
                else
                {
                    lblUserDetail.Text = "Welcome " + Session["user"];

                    timeSheet.TimeSheetLineItem = new List <TimeSheetLineItem>();

                    TimeSheetLineItem timeSheetLineItem = new TimeSheetLineItem();

                    timeSheet.TimeSheetLineItem.Add(timeSheetLineItem);

                    gvTimeSheet.EditIndex = timeSheet.TimeSheetLineItem.Count - 1;

                    ViewState.Add("TimeSheet", timeSheet);


                    gvTimeSheet.DataSource = timeSheet.TimeSheetLineItem;
                    gvTimeSheet.DataBind();

                    ((TextBox)gvTimeSheet.Rows[timeSheet.TimeSheetLineItem.Count - 1].FindControl("txtTimeSheetDate")).Text = "";
                    ((TextBox)gvTimeSheet.Rows[timeSheet.TimeSheetLineItem.Count - 1].FindControl("txtWorkTime")).Text      = "";
                }
            }
        }
Esempio n. 7
0
        public int UpdateTimeSheet(TimeSheetLineItem lineItem)
        {
            TimeSheetLineItem tl = dB.TimeSheetLineItems.Where(t => t.Id == lineItem.Id).FirstOrDefault();

            tl.TimeSheetDate  = lineItem.TimeSheetDate;
            tl.WorkTime       = lineItem.WorkTime;
            tl.LastUpdateDate = lineItem.LastUpdateDate;
            tl.TimeSheet      = lineItem.TimeSheet;



            dB.TimeSheetLineItems.Attach(tl);
            return(dB.SaveChanges());
        }
Esempio n. 8
0
        public ActionResult UpdateSheet(TimeSheetModel timeSheet)
        {
            var date = timeSheet.Date.DateFromUsFormat();

            // Check for duplicates
            var exists = _timeSheetRepository.Any(t => t.CreatedByUserId == WebUser.Id && t.Date == date.Date && t.Id != timeSheet.Id);

            if (exists)
            {
                return(Json(false));
            }

            var selectedSheet = _timeSheetRepository.Get(timeSheet.Id);

            if (selectedSheet != null)
            {
                selectedSheet.Title      = $"{WebUser.Name}'s {"TimeSheet for "} {timeSheet.Date}";
                selectedSheet.Date       = date.Date;
                selectedSheet.State      = TimeSheetState.PendingApproval;
                selectedSheet.TotalHours = timeSheet.Rows.Sum(r => r.Effort);
                selectedSheet.Comments   = timeSheet.Comments;

                selectedSheet.UpdatedByUserId = WebUser.Id;

                _timeSheetRepository.Update(selectedSheet);
                _unitOfWork.Commit();

                // Remove Existing
                var existingRows = _timeSheetLineItemRepository.GetAllBy(t => t.TimeSheetId == timeSheet.Id).ToList();
                foreach (var existingRow in existingRows)
                {
                    _timeSheetLineItemRepository.Delete(existingRow);
                }

                _unitOfWork.Commit();

                // Add Fresh
                foreach (var lineItem in timeSheet.Rows)
                {
                    var newTimeSheetLineItem = new TimeSheetLineItem
                    {
                        TimeSheetId = selectedSheet.Id,
                        ProjectId   = lineItem.ProjectId,
                        TaskId      = lineItem.TaskId,
                        TaskSummary = lineItem.TaskSummary,
                        Effort      = lineItem.Effort,
                        Comments    = lineItem.Comments,
                        WorkType    = lineItem.WorkType
                    };

                    _timeSheetLineItemRepository.Create(newTimeSheetLineItem);
                }

                _unitOfWork.Commit();

                // Log Activity
                var activity = new TimeSheetActivity
                {
                    TimeSheetId     = selectedSheet.Id,
                    Title           = "Updated",
                    Comment         = $"{WebUser.Name} updated the TimeSheet at {DateTime.UtcNow.ToString("G")} with state {selectedSheet.State} & hours {selectedSheet.TotalHours}",
                    CreatedByUserId = WebUser.Id
                };

                _timeSheetActivityRepository.Create(activity);
                _unitOfWork.Commit();

                // Notify the reporting manager online
                var loginEmployee = _employeeRepository.GetBy(r => r.UserId == WebUser.Id, "ReportingPerson");
                if (loginEmployee?.ReportingPerson != null)
                {
                    var message = $"{WebUser.Name} has updated the timesheet with {selectedSheet.TotalHours} hours";
                    _notificationService.NotifyUser("Timesheet Updated", message, loginEmployee.ReportingPerson.Code);
                }

                // Send Email, Email Template name is hard corded - Need to change later
                // Replace the hard coded emails with settings or a team.
#if !DEBUG
                _emailComposerService.TimeSheetUpdated(selectedSheet.Id);
#endif

                return(Json(true));
            }

            return(Json(false));
        }
Esempio n. 9
0
        public ActionResult CreateSheet(TimeSheetModel timeSheet)
        {
            var date   = timeSheet.Date.DateFromUsFormat();
            var exists = _timeSheetRepository.Any(t => t.CreatedByUserId == WebUser.Id && t.Date == date.Date);

            if (!exists)
            {
                var newTimeSheet = new TimeSheet
                {
                    State           = TimeSheetState.PendingApproval,
                    Title           = $"{WebUser.Name}'s {"TimeSheet for "} {timeSheet.Date}",
                    Date            = date.Date,
                    TotalHours      = timeSheet.Rows.Sum(r => r.Effort),
                    Comments        = timeSheet.Comments,
                    CreatedByUserId = WebUser.Id
                };

                _timeSheetRepository.Create(newTimeSheet);

                foreach (var lineItem in timeSheet.Rows)
                {
                    var newTimeSheetLineItem = new TimeSheetLineItem
                    {
                        TimeSheetId = newTimeSheet.Id,
                        ProjectId   = lineItem.ProjectId,
                        TaskId      = lineItem.TaskId,
                        TaskSummary = lineItem.TaskSummary,
                        Effort      = lineItem.Effort,
                        Comments    = lineItem.Comments,
                        WorkType    = lineItem.WorkType
                    };

                    _timeSheetLineItemRepository.Create(newTimeSheetLineItem);
                }

                _unitOfWork.Commit();

                // Log Activity
                var activity = new TimeSheetActivity
                {
                    TimeSheetId     = newTimeSheet.Id,
                    Title           = "Created",
                    Comment         = $"{WebUser.Name} created the TimeSheet at {DateTime.UtcNow.ToString("G")} with state {newTimeSheet.State} & hours {newTimeSheet.TotalHours}",
                    CreatedByUserId = WebUser.Id
                };

                _timeSheetActivityRepository.Create(activity);
                _unitOfWork.Commit();

                //Update if there is a missing timesheet entry
                var missedList = _missedTimeSheetRepository.GetAllBy(m => m.UserId == newTimeSheet.CreatedByUserId && m.Date == newTimeSheet.Date && m.FilledOn == null);
                foreach (var missedTimeSheet in missedList)
                {
                    missedTimeSheet.FilledOn = DateTime.UtcNow;
                    _missedTimeSheetRepository.Update(missedTimeSheet);
                }

                _unitOfWork.Commit();

                // Notify the reporting manager online
                var loginEmployee = _employeeRepository.GetBy(r => r.UserId == WebUser.Id, "ReportingPerson");
                if (loginEmployee?.ReportingPerson != null)
                {
                    var message = $"{WebUser.Name} has submitted the timesheet with {newTimeSheet.TotalHours} hours";
                    _notificationService.NotifyUser("Timesheet Submitted", message, loginEmployee.ReportingPerson.Code);
                }

                // Send Email, Email Template name is hard corded - Need to change later
                // Replace the hard coded emails with settings or a team.
#if !DEBUG
                _emailComposerService.TimeSheetSubmitted(newTimeSheet.Id);
#endif

                return(Json(true));
            }

            return(Json(false));
        }
Esempio n. 10
0
        public ActionResult Update(LeaveUpdateModel vm)
        {
            if (ModelState.IsValid)
            {
                Employee currentUser = new Employee();


                if (vm.RequestedForUserId.Value != 0)
                {
                    currentUser = _employeeRepository.GetBy(l => l.Id == vm.RequestedForUserId);
                }
                else
                {
                    currentUser = _employeeRepository.GetBy(l => l.UserId == WebUser.Id);
                }
                if (currentUser.ReportingPersonId.HasValue)

                {
                    if (currentUser != null)
                    {
                        // Preprocess based on Duration, we dont get the end if it's a single day or half day
                        if (vm.Duration != LeaveDuration.MultipleDays)
                        {
                            vm.End = vm.Start;
                        }
                        var newLeave = new Leave
                        {
                            LeaveTypeId     = vm.LeaveTypeId,
                            Duration        = vm.Duration,
                            Start           = vm.Start,
                            End             = vm.End,
                            Reason          = vm.Reason,
                            Status          = LeaveStatus.Pending,
                            ApproverId      = currentUser.ReportingPersonId ?? 2,
                            Count           = vm.Count,
                            CreatedByUserId = WebUser.Id
                        };
                        if (vm.RequestedForUserId.HasValue && vm.RequestedForUserId != 0)
                        {
                            newLeave.RequestedForUserId = vm.RequestedForUserId;
                        }
                        else
                        {
                            var employee = _employeeRepository.GetBy(r => r.UserId == WebUser.Id);
                            newLeave.RequestedForUserId = employee.Id;
                        }
                        _leaveRepository.Create(newLeave);
                        _unitOfWork.Commit();

                        var employeeId    = newLeave.RequestedForUserId;
                        var loginEmployee = _employeeRepository.GetBy(r => r.Id == employeeId);
                        var userEmployee  = _userRepository.GetBy(r => r.Id == loginEmployee.UserId, "Person");

                        if (vm.Duration == LeaveDuration.FirstHalf || vm.Duration == LeaveDuration.SecondHalf)
                        {
                            var date   = vm.Start;
                            var exists = _timeSheetRepository.Any(t => t.CreatedByUserId == userEmployee.Id && t.Date == date.Date);
                            if (!exists)
                            {
                                var newTimeSheet = new TimeSheet
                                {
                                    State           = TimeSheetState.PendingApproval,
                                    Title           = $"{userEmployee.Person.Name}'s {"TimeSheet for "} {vm.Start.ToShortDateString()}",
                                    Date            = date.Date,
                                    TotalHours      = 4,
                                    Comments        = null,
                                    CreatedByUserId = userEmployee.Id
                                };

                                _timeSheetRepository.Create(newTimeSheet);

                                var project = _projectRepository.GetBy(i => i.Title == "Leave");
                                var newTimeSheetLineItem = new TimeSheetLineItem
                                {
                                    TimeSheetId = newTimeSheet.Id,
                                    ProjectId   = project.Id,
                                    TaskId      = null,
                                    TaskSummary = "Leave",
                                    Effort      = 4,
                                    Comments    = null,
                                    WorkType    = 2
                                };
                                _timeSheetLineItemRepository.Create(newTimeSheetLineItem);
                                _unitOfWork.Commit();

                                // Log Activity
                                var activity = new TimeSheetActivity
                                {
                                    TimeSheetId     = newTimeSheet.Id,
                                    Title           = "Created",
                                    Comment         = $"{userEmployee.Person.Name} created the TimeSheet at {DateTime.UtcNow.ToString("G")} with state {newTimeSheet.State} & hours {newTimeSheet.TotalHours}",
                                    CreatedByUserId = userEmployee.Id
                                };
                                _timeSheetActivityRepository.Create(activity);
                                _unitOfWork.Commit();
                            }
                        }
                        if (vm.Duration == LeaveDuration.OneFullDay)
                        {
                            var date   = vm.Start;
                            var exists = _timeSheetRepository.Any(t => t.CreatedByUserId == userEmployee.Id && t.Date == date.Date);
                            if (!exists)
                            {
                                var newTimeSheet = new TimeSheet
                                {
                                    State           = TimeSheetState.PendingApproval,
                                    Title           = $"{userEmployee.Person.Name}'s {"TimeSheet for "} {vm.Start.ToShortDateString()}",
                                    Date            = date.Date,
                                    TotalHours      = 8,
                                    Comments        = null,
                                    CreatedByUserId = userEmployee.Id
                                };
                                _timeSheetRepository.Create(newTimeSheet);

                                var project = _projectRepository.GetBy(i => i.Title == "Leave");
                                var newTimeSheetLineItem = new TimeSheetLineItem
                                {
                                    TimeSheetId = newTimeSheet.Id,
                                    ProjectId   = project.Id,
                                    TaskId      = null,
                                    TaskSummary = "Leave",
                                    Effort      = 8,
                                    Comments    = null,
                                    WorkType    = 2
                                };
                                _timeSheetLineItemRepository.Create(newTimeSheetLineItem);
                                _unitOfWork.Commit();

                                var activity = new TimeSheetActivity
                                {
                                    TimeSheetId     = newTimeSheet.Id,
                                    Title           = "Created",
                                    Comment         = $"{userEmployee.Person.Name} created the TimeSheet at {DateTime.UtcNow.ToString("G")} with state {newTimeSheet.State} & hours {newTimeSheet.TotalHours}",
                                    CreatedByUserId = userEmployee.Id
                                };
                                _timeSheetActivityRepository.Create(activity);
                                _unitOfWork.Commit();
                            }
                        }
                        if (vm.Duration == LeaveDuration.MultipleDays)
                        {
                            List <DateTime> allDates          = new List <DateTime>();
                            List <DateTime> datesForTimesheet = new List <DateTime>();
                            for (DateTime dates = vm.Start; dates <= vm.End; dates = dates.AddDays(1))
                            {
                                allDates.Add(dates);
                            }
                            foreach (var datetime in allDates)
                            {
                                if (datetime.DayOfWeek != DayOfWeek.Saturday && datetime.DayOfWeek != DayOfWeek.Sunday)
                                {
                                    datesForTimesheet.Add(datetime);
                                }
                            }
                            var date   = vm.Start;
                            var exists = _timeSheetRepository.Any(t => t.CreatedByUserId == userEmployee.Id && t.Date == date.Date);
                            if (!exists)
                            {
                                foreach (var timesheetdate in datesForTimesheet)
                                {
                                    var newTimeSheet = new TimeSheet
                                    {
                                        State           = TimeSheetState.PendingApproval,
                                        Title           = $"{userEmployee.Person.Name}'s {"TimeSheet for "}{timesheetdate.ToShortDateString()}",
                                        Date            = timesheetdate,
                                        TotalHours      = 8,
                                        Comments        = null,
                                        CreatedByUserId = userEmployee.Id
                                    };
                                    _timeSheetRepository.Create(newTimeSheet);

                                    var project = _projectRepository.GetBy(i => i.Title == "Leave");
                                    var newTimeSheetLineItem = new TimeSheetLineItem
                                    {
                                        TimeSheetId = newTimeSheet.Id,
                                        ProjectId   = project.Id,
                                        TaskId      = null,
                                        TaskSummary = "Leave",
                                        Effort      = 8,
                                        Comments    = null,
                                        WorkType    = 2
                                    };
                                    _timeSheetLineItemRepository.Create(newTimeSheetLineItem);
                                    _unitOfWork.Commit();

                                    // Log Activity
                                    var activity = new TimeSheetActivity
                                    {
                                        TimeSheetId     = newTimeSheet.Id,
                                        Title           = "Created",
                                        Comment         = $"{userEmployee.Person.Name} created the TimeSheet at {DateTime.UtcNow.ToString("G")} with state {newTimeSheet.State} & hours {newTimeSheet.TotalHours}",
                                        CreatedByUserId = userEmployee.Id
                                    };
                                    _timeSheetActivityRepository.Create(activity);
                                    _unitOfWork.Commit();
                                }
                            }
                        }

#if !DEBUG
                        // _emailComposerService.TestEmailSend(vm);
                        _emailComposerService.LeaveApplicationEmail(newLeave.Id);
                        //  _emailComposerService.TimeSheetSubmitted(newTimeSheet.Id);
#endif

                        return(Json(true));
                    }
                }
            }


            return(Json(false));
        }