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)); }
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"); } }
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()); }
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 = ""; } } }
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()); }
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)); }
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)); }
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)); }