public TimeSheetActivity GetUserActiveActivity(string userId, bool includeTask) { List <int> timesheetIds = db.TimeSheets.Where(k => k.UserId == userId) .Select(k => k.ID).ToList(); if (timesheetIds.Count == 0) { return(null); } var dbActiveActivity = db.TimeSheetActivities .Include(k => k.TimeSheetTask) .Include(k => k.IpAddress) .FirstOrDefault(k => timesheetIds.Contains(k.TimeSheetTask.TimeSheetId) && !k.ToDate.HasValue && !k.DeletedAt.HasValue); if (dbActiveActivity == null) { return(null); } TimeSheetActivity activity = _mapper.Map <TimeSheetActivity>(dbActiveActivity); if (includeTask) { var dbTask = db.ProjectTasks.First(k => k.ID == activity.TimeSheetTask.ProjectTaskId); activity.ProjectTask = _mapper.Map <ProjectTask>(dbTask); } //activity.ProjectTask = db.ProjectTasks.First(k=>k.ID == activity.TimeSheetTask) return(activity); }
public ProjectTask GetActivityTask(int id) { //db.SaveChanges(); TimeSheetActivity activity = Get(id); if (activity == null) { return(null); } var dbTimeSheetTask = db.TimeSheetTasks.First(k => k.ID == activity.TimeSheetTaskId); var dbProject = db.ProjectTasks.AsNoTracking() .First(k => k.ID == dbTimeSheetTask.ProjectTaskId); //dbProject.Team = null; //dbProject.Category = null; //dbProject.Tasks = null; //if (dbProject.Parent != null) //{ // dbProject.Parent.Team = null; // dbProject.Parent.Category = null; // dbProject.Parent.Tasks = null; //} return(_mapper.Map <ProjectTask>(dbProject)); }
//public TimeSheetActivity Add(TimeSheetActivity activity, string ipAddress) //{ // try // { // //TimeSheetTaskId, // //ipAddress // if (activity.TimeSheetTaskId == 0) // { // return null; // } // bool ipAdded = _ipAddressMethods.AddIfNotExist(ipAddress); // if (ipAdded) // { // activity.Address = ipAddress; // } // var dbActivity = _mapper.Map<DataSets.TimeSheetActivity>(activity); // var record_pending = db.TimeSheetActivities.Add(dbActivity); // if (db.SaveChanges() > 0) // { // return Get(record_pending.Entity.ID); // } // return null; // } // catch (Exception ex) // { // return null; // } //} //public TimeSheetActivity Update(TimeSheetActivity activity, string ipAddress) //{ // try // { // DataSets.TimeSheetActivity dbActivity = db.TimeSheetActivities.FirstOrDefault(k => k.ID == activity.ID); // if (dbActivity == null) // { // return null; // } // #region ACTIVITY LOG // TimeSheetActivityLog log = _mapper.Map<TimeSheetActivityLog>(dbActivity); // log.DateAdded = DateTime.Now; // log.TimeSheetActivityId = dbActivity.ID; // log.ID = 0; // _activityLogs.Add(log); // #endregion // bool ipAdded = _ipAddressMethods.AddIfNotExist(ipAddress); // dbActivity.Address = ipAdded ? activity.Address : null; // dbActivity.FromDate = activity.FromDate; // dbActivity.ToDate = activity.ToDate; // dbActivity.Message = activity.Message; // db.SaveChanges(); // return Get(dbActivity.ID); // } // catch (Exception ex) // { // return null; // } //} public TimeSheetActivity Get(int id) { DataSets.TimeSheetActivity dbActivity = db.TimeSheetActivities //.Include(k => k.TimeSheetTask) .Include(k => k.IpAddress) .FirstOrDefault(k => k.ID == id); if (dbActivity == null) { return(null); } TimeSheetActivity activity = _mapper.Map <TimeSheetActivity>(dbActivity); // get ip title //if (dbActivity.IpAddress != null) //{ // DataSets.IpAddress address = db.IpAddresses.FirstOrDefault(k => k.Address == dbActivity.IpAddress); // if (address != null) // { // activity.IpAddressDisplay = address.Title; // } //} return(activity); }
public bool AddActivity(TimeSheetActivity model) { var query = @" INSERT INTO timesheet_activity(cd_user,dh_input,dc_activity) VALUES(@cd_user,@dh_input,@dc_activity) "; using (var dbCon = new SQLiteConnection(string.Concat("Data Source=", base.db_path))) return(dbCon.Execute(query, new { cd_user = model.cd_user, dh_input = model.dh_input, dc_activity = model.dc_activity }) > 0); }
public bool AddActivity(DateTime dh_input, string dc_activity) { var model = new TimeSheetActivity { dh_input = dh_input, cd_user = this._IUserService.Me.cd_user, dc_activity = dc_activity }; return(this._ITimeSheetRepository.AddActivity(model)); }
public IActionResult GetUserActiveActivity(string userId, bool includeTask) { try { TimeSheetActivity activity = _activitiesMethods.GetUserActiveActivity(userId, includeTask); return(Ok(activity)); } catch (ClientException ex) { return(BadRequest(new { message = ex.Message })); } catch (Exception ex) { return(StatusCode(500, new { message = ex.Message })); } }
public User GetActivityUser(int id) { TimeSheetActivity activity = Get(id); if (activity == null) { return(null); } var dbTimeSheetProject = db.TimeSheetTasks.First(k => k.ID == activity.TimeSheetTaskId); string userId = db.TimeSheets.First(k => k.ID == dbTimeSheetProject.TimeSheetId).UserId; var dbUser = db.Users.Include(k => k.Team).First(k => k.Id == userId); return(_mapper.Map <DataContract.User>(dbUser)); }
public JsonResult NeedsCorrection(TimeSheetStatusViewModel vm) { var employee = _employeeRepository.GetBy(u => u.UserId == WebUser.Id, "User,User.Person"); var selectedTimeSheet = _timeSheetRepository.Get(vm.Id); if (selectedTimeSheet != null) { selectedTimeSheet.State = TimeSheetState.NeedsCorrection; selectedTimeSheet.ApprovedByEmployeeId = employee.Id; selectedTimeSheet.ApproverComments = vm.Comments; _timeSheetRepository.Update(selectedTimeSheet); _unitOfWork.Commit(); // Log Activity var activity = new TimeSheetActivity { TimeSheetId = selectedTimeSheet.Id, Title = "Needs Correction", Comment = $"{WebUser.Name} rejected the TimeSheet at {DateTime.UtcNow:G} with comments {vm.Comments}", CreatedByUserId = WebUser.Id }; _timeSheetActivityRepository.Create(activity); _unitOfWork.Commit(); // Notify the user online var submittedByUser = _userRepository.Get(selectedTimeSheet.CreatedByUserId); if (submittedByUser?.Person != null) { var message = $"Your timesheet for {selectedTimeSheet.Date.ToShortDateString()} needs correction"; _notificationService.NotifyUser("Timesheet Needs Correction", message, submittedByUser.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.TimeSheetNeedsCorrection(selectedTimeSheet.Id); #endif return(Json(true)); } return(Json(false)); }
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)); }