public async Task <bool> ClockInAsync(Guid id)
        {
            // try and find a time where the user is already clocked in but has
            // not clocked out.
            var alreadyClockedIn = await _context.TimeSheets
                                   .Where(x => x.Exit == null && x.EmployeeId.Equals(id))
                                   .SingleOrDefaultAsync();

            // if there is a date without an exit value return false
            if (alreadyClockedIn != null)
            {
                return(false);
            }
            // otherwise create a new timesheet entry
            else
            {
                var newTime = new TimeSheetModel();
                newTime.Approved      = 0;
                newTime.Id            = new Guid();
                newTime.EmployeeId    = id;
                newTime.statusMessage = "";
                newTime.Enter         = DateTime.Now;

                _context.TimeSheets.Add(newTime);

                var saveResult = await _context.SaveChangesAsync();

                return(saveResult != 0);
            }
        }
Example #2
0
        public ActionResult GetTimeSheet(int id)
        {
            var timeSheet = _timeSheetRepository.Get(id);
            var lineItems = _timeSheetLineItemRepository.GetAllBy(l => l.TimeSheetId == timeSheet.Id).ToList();

            if (timeSheet != null)
            {
                var model = new TimeSheetModel
                {
                    Title    = timeSheet.Title,
                    Date     = timeSheet.Date.ToString("MM/dd/yyyy"),
                    Comments = timeSheet.Comments
                };

                var lineItemModels = lineItems.Select(l => new TimeSheetLineItemModel
                {
                    Comments    = l.Comments,
                    Effort      = l.Effort,
                    ProjectId   = l.ProjectId,
                    TaskSummary = l.TaskSummary,
                    WorkType    = l.WorkType
                }).ToList();

                model.Rows = lineItemModels;

                return(Json(model, JsonRequestBehavior.AllowGet));
            }

            return(Json(false, JsonRequestBehavior.AllowGet));
        }
Example #3
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));
        }
        public IActionResult GenerateTimesheet(JobDetailsModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", model));
            }

            var timeSheetModel = new TimeSheetModel()
            {
                Client = model.Client, FullName = model.FirstName + " " + model.LastName, JobTitle = model.JobTitle
            };

            ITimeSheetGenerator timeSheetGenerator;

            if (model.TimeSheetFrequency == "Weekly")
            {
                timeSheetGenerator = new WeeklyTimesheetGenerator();
            }
            else
            {
                timeSheetGenerator = new MonthlyTimesheetGenerator();
            }

            timeSheetModel.TimeSheets = timeSheetGenerator.Generate(model.StartDate, model.EndDate);

            return(View("TimeSheetView", timeSheetModel));
        }
Example #5
0
        public HttpResponseMessage GetSheetById(int timesheetid)//timesheet id
        {
            HttpResponseMessage response = null;

            try
            {
                if (timesheetid != 0)
                {
                    TimeSheetModel record = TimeSheetRepo.GetSheetById(timesheetid);
                    if (record != null)
                    {
                        response = Request.CreateResponse(HttpStatusCode.OK, new EMSResponseMessage("EMS_001", "Success", record));
                    }
                    else
                    {
                        response = Request.CreateResponse(HttpStatusCode.OK, new EMSResponseMessage("EMS_901", "Invalid", "TimeSheet doesnot exists!"));
                    }
                }
                else
                {
                    response = Request.CreateResponse(HttpStatusCode.OK, new EMSResponseMessage("EMS_102", "Invalid Input", "Please check input Json"));
                }
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception.Message);
                Debug.WriteLine(exception.GetBaseException());
                response = Request.CreateResponse(HttpStatusCode.OK, new EMSResponseMessage("EMS_101", "Application Error", exception.Message));
            }
            return(response);
        }
        public void loadDocument()
        {
            string          json         = JsonHelper.loadDocument(Settings.Default.ProjectID, "TimeSheet");
            List <string[]> documentInfo = new List <string[]>();

            newTimeSheetModel     = new TimeSheetModel();
            currentTimeSheetModel = new TimeSheetModel();
            if (json != "")
            {
                versionControl        = JsonConvert.DeserializeObject <VersionControl <TimeSheetModel> >(json);
                newTimeSheetModel     = JsonConvert.DeserializeObject <TimeSheetModel>(versionControl.getLatest(versionControl.DocumentModels));
                currentTimeSheetModel = JsonConvert.DeserializeObject <TimeSheetModel>(versionControl.getLatest(versionControl.DocumentModels));

                txtTimesheetFormProjectName.Text    = newTimeSheetModel.timeSheetForm.projectName;
                txtTimesheetFormProjectManager.Text = newTimeSheetModel.timeSheetForm.projectManager;
                txtTimesheetFormTeamMember.Text     = newTimeSheetModel.timeSheetForm.teamMember;

                txtName.Text                   = newTimeSheetModel.timeSheetForm.submittedName;
                txtProjectRole.Text            = newTimeSheetModel.timeSheetForm.submittedRole;
                txtSignature.Text              = newTimeSheetModel.timeSheetForm.submittedSignature;
                dateTimePickerSubmittedBy.Text = newTimeSheetModel.timeSheetForm.submittedDate;

                txtApprovedByName.Text        = newTimeSheetModel.timeSheetForm.approvedName;
                txtApprovedByProjectRole.Text = newTimeSheetModel.timeSheetForm.approvedRole;
                txtApprovedBySignature.Text   = newTimeSheetModel.timeSheetForm.approvedSignature;
                dateTimePickerApprovedBy.Text = newTimeSheetModel.timeSheetForm.approvedDate;

                for (int i = 0; i < currentTimeSheetModel.timeSheetForm.timeSpents.Count; i++)
                {
                    var timeSpent     = currentTimeSheetModel.timeSheetForm.timeSpents[i];
                    var taskCompleted = currentTimeSheetModel.timeSheetForm.tasksCompleted[i];
                    var deliverables  = currentTimeSheetModel.timeSheetForm.deliverablesProduced[i];

                    dataGridViewTimesheetForm.Rows.Add(new String[] {
                        timeSpent.date,
                        timeSpent.startTime,
                        timeSpent.endTime,
                        timeSpent.duration,
                        taskCompleted.activity,
                        taskCompleted.task,
                        deliverables.startPercentComplete,
                        deliverables.endPercentComplete,
                        deliverables.result
                    });
                }
            }
            else
            {
                versionControl = new VersionControl <TimeSheetModel>();
                versionControl.DocumentModels   = new List <VersionControl <TimeSheetModel> .DocumentModel>();
                newTimeSheetModel               = new TimeSheetModel();
                newTimeSheetModel.timeSheetForm = new TimeSheetModel.TimeSheetForm();
            }
        }
        public ActionResult GetTimeSheetByStatus(UpdateTimeSheetStatusModels data)
        {
            TimeSheetModel        TS         = null;
            List <TimeSheetModel> timeSheets = null;

            try
            {
                using (var con = db.Gdb())
                {
                    timeSheets = new List <TimeSheetModel>();
                    SqlCommand cmd = new SqlCommand("dbo.spGetTimeSheetByStatus", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@id", data.userId);
                    cmd.Parameters.AddWithValue("@status", data.status);
                    con.Open();

                    SqlDataReader rd = cmd.ExecuteReader();

                    while (rd.Read())
                    {
                        TS                 = new TimeSheetModel();
                        TS.id              = Convert.ToInt32(rd["id"]);
                        TS.timeSheetKey    = Convert.ToString(rd["timeSheetKey"]);
                        TS.type            = Convert.ToString(rd["type"]);
                        TS.startTime       = Convert.ToString(rd["start_time"]);
                        TS.endTime         = Convert.ToString(rd["end_time"]);
                        TS.breaks          = Convert.ToString(rd["breaks"]);
                        TS.workTime        = Convert.ToString(rd["work_time"]);
                        TS.notes           = Convert.ToString(rd["notes"]);
                        TS.entryDate       = Convert.ToDateTime(rd["entryDate"]);
                        TS.timeSheetStatus = Convert.ToString(rd["timeSheetStatus"]);
                        TS.m3              = Convert.ToInt32(rd["m3"]);
                        TS.kmStand         = Convert.ToInt32(rd["km_stand"]);
                        TS.privat          = Convert.ToInt32(rd["privat"]);
                        TS.fuel            = Convert.ToInt32(rd["fuel"]);
                        TS.adblue          = Convert.ToInt32(rd["adblue"]);

                        TS.UserId = Convert.ToInt32(rd["employeeId"]);

                        timeSheets.Add(TS);
                    }
                    con.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(Ok(timeSheets));
        }
        private int ProjectSelectCount(TimeSheetModel timesheetmodel)
        {
            try
            {
                int count = 0;
                if (timesheetmodel.ProjectID1 != null && (timesheetmodel.texttotal_p1 != null && timesheetmodel.texttotal_p1 != 0))
                {
                    count = count + 1;
                }

                if (timesheetmodel.ProjectID2 != null && (timesheetmodel.texttotal_p2 != null && timesheetmodel.texttotal_p2 != 0))
                {
                    count = count + 1;
                }

                if (timesheetmodel.ProjectID3 != null && (timesheetmodel.texttotal_p3 != null && timesheetmodel.texttotal_p3 != 0))
                {
                    count = count + 1;
                }

                if (timesheetmodel.ProjectID3 != null && (timesheetmodel.texttotal_p3 != null && timesheetmodel.texttotal_p3 != 0))
                {
                    count = count + 1;
                }

                if (timesheetmodel.ProjectID4 != null && (timesheetmodel.texttotal_p4 != null && timesheetmodel.texttotal_p4 != 0))
                {
                    count = count + 1;
                }

                if (timesheetmodel.ProjectID5 != null && (timesheetmodel.texttotal_p5 != null && timesheetmodel.texttotal_p5 != 0))
                {
                    count = count + 1;
                }

                if (timesheetmodel.ProjectID6 != null && (timesheetmodel.texttotal_p6 != null && timesheetmodel.texttotal_p6 != 0))
                {
                    count = count + 1;
                }

                return(count);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public ActionResult TimeSheets(TimeSheetModel objTimeSheetModel)
        {
            TimeSheetsDetail tmDetails = new TimeSheetsDetail();

            tmDetails.EmpId           = objTimeSheetModel.EmpId;
            tmDetails.TaskId          = objTimeSheetModel.TaskId;
            tmDetails.ActualStartDate = objTimeSheetModel.ActualStartDate;
            tmDetails.ActualEndDate   = objTimeSheetModel.ActualEndDate;
            tmDetails.Efforts         = objTimeSheetModel.Efforts;
            tmDetails.ProductiveHrs   = objTimeSheetModel.ProductiveHrs;
            tmDetails.ActivityComment = objTimeSheetModel.ActivityComment;
            tmDetails.ActId           = objTimeSheetModel.ActId;
            objTMS.TimeSheetsDetails.Add(tmDetails);
            objTMS.SaveChanges();

            return(RedirectToAction("TimeSheets"));
        }
 public void Post([FromBody] TimeSheetModel timesheet)
 {
     //Server-side validation
     if (ModelState.IsValid)
     {
         //Create Entity from validated data
         var toAdd = new TimeSheet
         {
             EmployeeName = timesheet.EmployeeName,
             Date         = timesheet.Date,
             HoursWorked  = timesheet.HoursWorked
         };
         //Add to EntityFramework here
         _context.TimeSheets.Add(toAdd);
         _context.SaveChanges();
     }
 }
 private int?CalculateTotalHours(TimeSheetModel TimeSheetModel)
 {
     try
     {
         int?Total = 0;
         var val1  = TimeSheetModel.texttotal_p1 == null ? 0 : TimeSheetModel.texttotal_p1;
         var val2  = TimeSheetModel.texttotal_p2 == null ? 0 : TimeSheetModel.texttotal_p2;
         var val3  = TimeSheetModel.texttotal_p3 == null ? 0 : TimeSheetModel.texttotal_p3;
         var val4  = TimeSheetModel.texttotal_p4 == null ? 0 : TimeSheetModel.texttotal_p4;
         var val5  = TimeSheetModel.texttotal_p5 == null ? 0 : TimeSheetModel.texttotal_p5;
         var val6  = TimeSheetModel.texttotal_p6 == null ? 0 : TimeSheetModel.texttotal_p6;
         Total = val1 + val2 + val3 + val4 + val5 + val6;
         return(Total);
     }
     catch (Exception)
     {
         throw;
     }
 }
        public ActionResult EditTimeSheetByUser(TimeSheetModel model)
        {
            try
            {
                if (model.endTime != "-1" && model.startTime != "-1")
                {
                    DateTime StartTime = Convert.ToDateTime(model.startTime);
                    DateTime EndTime   = Convert.ToDateTime(model.endTime);
                    var      WorkTime  = EndTime.Subtract(StartTime);
                    var      conv      = WorkTime.ToString(@"h\:mm");
                    model.workTime = conv;
                }
                using (var con = db.Gdb())
                {
                    SqlCommand cmd = new SqlCommand("dbo.spEditTimeSheetByUser", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@id", model.id);
                    cmd.Parameters.AddWithValue("@type", model.type);
                    cmd.Parameters.AddWithValue("@start_time", model.startTime);
                    cmd.Parameters.AddWithValue("@end_time", model.endTime);
                    cmd.Parameters.AddWithValue("@breaks", model.breaks);
                    cmd.Parameters.AddWithValue("@work_time", model.workTime);
                    cmd.Parameters.AddWithValue("@m3", model.m3);
                    cmd.Parameters.AddWithValue("@km_stand", model.kmStand);
                    cmd.Parameters.AddWithValue("@privat", model.privat);
                    cmd.Parameters.AddWithValue("@fuel", model.fuel);
                    cmd.Parameters.AddWithValue("@adblue", model.adblue);
                    cmd.Parameters.AddWithValue("@notes", model.notes);
                    cmd.Parameters.AddWithValue("@employeeId", model.UserId);
                    cmd.Parameters.AddWithValue("@entryDate", model.entryDate);
                    cmd.Parameters.AddWithValue("@timeSheetKey", model.timeSheetKey);

                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            return(Ok());
        }
 private int?CalculateTotalHours(TimeSheetModel TimeSheetModel)
 {
     try
     {
         int?Total = 0;
         var val1  = TimeSheetModel.texttotal_p1 ?? 0;
         var val2  = TimeSheetModel.texttotal_p2 ?? 0;
         var val3  = TimeSheetModel.texttotal_p3 ?? 0;
         var val4  = TimeSheetModel.texttotal_p4 ?? 0;
         var val5  = TimeSheetModel.texttotal_p5 ?? 0;
         var val6  = TimeSheetModel.texttotal_p6 ?? 0;
         Total = val1 + val2 + val3 + val4 + val5 + val6;
         return(Total);
     }
     catch (Exception)
     {
         throw;
     }
 }
        public async Task <bool> DenyTime(TimeSheetModel time)
        {
            // get timesheet by id
            var update = await _context.TimeSheets
                         .Where(x => x.Id.ToString().Equals(time.Id.ToString()))
                         .SingleOrDefaultAsync();

            // if cannot be found return false
            if (update == null)
            {
                return(false);
            }

            // change approved to "denied"
            update.Approved = 2;
            // save entry
            var saveResult = await _context.SaveChangesAsync();

            return(saveResult == 1);
        }
Example #15
0
        public bool IsOneDayTimeMaintained(TimeSheetModel timesheet)
        {
            if (timesheet.HolidayStatus == "Week Off")
            {
                return(true);
            }

            TimeSpan calculatedWorkTime = CalculateTimeForADay(timesheet);
            int      minHours           = (int.Parse)(minDailyTime.Split(':')[0]);
            int      minMins            = (int.Parse)(minDailyTime.Split(':')[1]);
            TimeSpan expectedDailyTime  = new TimeSpan(minHours, minMins, 00);

            if (calculatedWorkTime.Ticks >= expectedDailyTime.Ticks)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public ActionResult Add(TimeSheetModel timesheetmodel)
        {
            try
            {
                if (timesheetmodel == null)
                {
                    ModelState.AddModelError(string.Empty, "Values Posted Are Not Accurate");
                    return(View());
                }

                TimeSheetMaster objtimesheetmaster = new TimeSheetMaster
                {
                    TimeSheetMasterID = 0,
                    UserID            = Convert.ToInt32(Session["UserID"]),
                    CreatedOn         = DateTime.Now,
                    FromDate          = timesheetmodel.hdtext1,
                    ToDate            = timesheetmodel.hdtext7,
                    TotalHours        = CalculateTotalHours(timesheetmodel),
                    TimeSheetStatus   = 1
                };
                int TimeSheetMasterID = _ITimeSheet.AddTimeSheetMaster(objtimesheetmaster);

                var count = ProjectSelectCount(timesheetmodel);

                if (TimeSheetMasterID > 0)
                {
                    Save(timesheetmodel, TimeSheetMasterID);
                    SaveDescription(timesheetmodel, TimeSheetMasterID);
                    _ITimeSheet.InsertTimeSheetAuditLog(InsertTimeSheetAudit(TimeSheetMasterID, 1));
                }

                TempData["TimeCardMessage"] = "Data Saved Successfully";

                return(RedirectToAction("Add", "TimeSheet"));
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #17
0
        public TimeSpan CalculateTimeForADay(TimeSheetModel timesheet)
        {
            TimeSpan calculatedWorkTime = TimeSpan.Zero;

            calculatedWorkTime = timesheet.WorkingHours;
            if (timesheet.HolidayStatus == "Holiday")
            {
                calculatedWorkTime += new TimeSpan(9, 00, 00);
            }
            if ((double)timesheet.LeaveDayQty == 0.5)
            {
                calculatedWorkTime += new TimeSpan(4, 00, 00);
            }
            if (timesheet.LeaveDayQty == 1)
            {
                calculatedWorkTime += new TimeSpan(9, 00, 00);
            }
            if ((double)(timesheet.WorkFromHomeDayQty) == 0.5)
            {
                calculatedWorkTime += new TimeSpan(4, 00, 00);
            }
            else if ((double)(timesheet.WorkFromHomeDayQty) == 1)
            {
                calculatedWorkTime += new TimeSpan(9, 00, 00);
            }

            //Permission Hours
            if (timesheet.permissionCountPersonal > 0)
            {
                int minutes = (int)((timesheet.permissionCountPersonal) * 60);
                calculatedWorkTime += TimeSpan.FromMinutes(minutes);
            }
            if (timesheet.permissionCountOfficial > 0)
            {
                int minutes = (int)((timesheet.permissionCountOfficial) * 60);
                calculatedWorkTime += TimeSpan.FromMinutes(minutes);
            }

            return(calculatedWorkTime);
        }
        public void SaveDescription(TimeSheetModel timesheetmodel, int TimeSheetMasterID)
        {
            try
            {
                if (timesheetmodel.ProjectID1 != null)
                {
                    InsertDescriptionDetail(timesheetmodel.ProjectID1, TimeSheetMasterID, timesheetmodel.Description_p1);
                }

                if (timesheetmodel.ProjectID2 != null)
                {
                    InsertDescriptionDetail(timesheetmodel.ProjectID2, TimeSheetMasterID, timesheetmodel.Description_p2);
                }

                if (timesheetmodel.ProjectID3 != null)
                {
                    InsertDescriptionDetail(timesheetmodel.ProjectID3, TimeSheetMasterID, timesheetmodel.Description_p3);
                }

                if (timesheetmodel.ProjectID4 != null)
                {
                    InsertDescriptionDetail(timesheetmodel.ProjectID4, TimeSheetMasterID, timesheetmodel.Description_p4);
                }

                if (timesheetmodel.ProjectID5 != null)
                {
                    InsertDescriptionDetail(timesheetmodel.ProjectID5, TimeSheetMasterID, timesheetmodel.Description_p5);
                }

                if (timesheetmodel.ProjectID6 != null)
                {
                    InsertDescriptionDetail(timesheetmodel.ProjectID6, TimeSheetMasterID, timesheetmodel.Description_p6);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        public ActionResult Add(TimeSheetModel timesheetmodel)
        {
            try
            {
                if (timesheetmodel == null)
                {
                    ModelState.AddModelError("", "Values Posted Are Not Accurate");
                    return(View());
                }

                TimeSheetMaster objtimesheetmaster = new TimeSheetMaster();
                objtimesheetmaster.TimeSheetMasterID = 0;
                objtimesheetmaster.UserID            = Convert.ToInt32(Session["UserID"]);
                objtimesheetmaster.CreatedOn         = DateTime.Now;
                objtimesheetmaster.FromDate          = timesheetmodel.hdtext1;
                objtimesheetmaster.ToDate            = timesheetmodel.hdtext7;
                objtimesheetmaster.TotalHours        = CalculateTotalHours(timesheetmodel);
                objtimesheetmaster.TimeSheetStatus   = 1;
                int TimeSheetMasterID = _ITimeSheet.AddTimeSheetMaster(objtimesheetmaster);

                var count = ProjectSelectCount(timesheetmodel);

                if (TimeSheetMasterID > 0)
                {
                    Save(timesheetmodel, TimeSheetMasterID); //used to call the code which update time sheet details table
                    SaveDescription(timesheetmodel, TimeSheetMasterID);
                    _ITimeSheet.InsertTimeSheetAuditLog(InsertTimeSheetAudit(TimeSheetMasterID, 1));
                }

                TempData["TimeCardMessage"] = "Data Saved Successfully";

                return(RedirectToAction("Add", "TimeSheet"));
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #20
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));
        }
        //Back-End
        public void SaveDocument()
        {
            newTimeSheetModel = new TimeSheetModel();
            newTimeSheetModel.timeSheetForm                = new TimeSheetModel.TimeSheetForm();
            newTimeSheetModel.timeSheetForm.projectName    = txtTimesheetFormProjectName.Text;
            newTimeSheetModel.timeSheetForm.projectManager = txtTimesheetFormProjectManager.Text;
            newTimeSheetModel.timeSheetForm.teamMember     = txtTimesheetFormTeamMember.Text;

            newTimeSheetModel.timeSheetForm.submittedName      = txtName.Text;
            newTimeSheetModel.timeSheetForm.submittedRole      = txtProjectRole.Text;
            newTimeSheetModel.timeSheetForm.submittedSignature = txtSignature.Text;
            newTimeSheetModel.timeSheetForm.submittedDate      = dateTimePickerSubmittedBy.Text;

            newTimeSheetModel.timeSheetForm.approvedName      = txtApprovedByName.Text;
            newTimeSheetModel.timeSheetForm.approvedRole      = txtApprovedByProjectRole.Text;
            newTimeSheetModel.timeSheetForm.approvedSignature = txtApprovedBySignature.Text;
            newTimeSheetModel.timeSheetForm.approvedDate      = dateTimePickerApprovedBy.Text;

            List <TimeSheetModel.TimeSheetForm.TimeSpent>            timeSpents            = new List <TimeSheetModel.TimeSheetForm.TimeSpent>();
            List <TimeSheetModel.TimeSheetForm.TasksCompleted>       tasksCompleteds       = new List <TimeSheetModel.TimeSheetForm.TasksCompleted>();
            List <TimeSheetModel.TimeSheetForm.DeliverablesProduced> deliverablesProduceds = new List <TimeSheetModel.TimeSheetForm.DeliverablesProduced>();

            int gridViewCounter = dataGridViewTimesheetForm.Rows.Count;

            for (int i = 0; i < gridViewCounter; i++)
            {
                TimeSheetModel.TimeSheetForm.TimeSpent            timeSpent            = new TimeSheetModel.TimeSheetForm.TimeSpent();
                TimeSheetModel.TimeSheetForm.TasksCompleted       tasksCompleted       = new TimeSheetModel.TimeSheetForm.TasksCompleted();
                TimeSheetModel.TimeSheetForm.DeliverablesProduced deliverablesProduced = new TimeSheetModel.TimeSheetForm.DeliverablesProduced();

                var tempDate      = dataGridViewTimesheetForm.Rows[i].Cells[0].Value?.ToString() ?? "";
                var tempStartTime = dataGridViewTimesheetForm.Rows[i].Cells[1].Value?.ToString() ?? "";
                var tempEndTime   = dataGridViewTimesheetForm.Rows[i].Cells[2].Value?.ToString() ?? "";
                var tempDuration  = dataGridViewTimesheetForm.Rows[i].Cells[3].Value?.ToString() ?? "";

                var tempActivity = dataGridViewTimesheetForm.Rows[i].Cells[4].Value?.ToString() ?? "";
                var tempTask     = dataGridViewTimesheetForm.Rows[i].Cells[5].Value?.ToString() ?? "";

                var tempStartPercentage = dataGridViewTimesheetForm.Rows[i].Cells[6].Value?.ToString() ?? "";
                var tempEndPercentage   = dataGridViewTimesheetForm.Rows[i].Cells[7].Value?.ToString() ?? "";
                var tempResult          = dataGridViewTimesheetForm.Rows[i].Cells[8].Value?.ToString() ?? "";

                timeSpent.date      = tempDate;
                timeSpent.startTime = tempStartTime;
                timeSpent.endTime   = tempEndTime;
                timeSpent.duration  = tempDuration;

                tasksCompleted.activity = tempActivity;
                tasksCompleted.task     = tempTask;

                deliverablesProduced.startPercentComplete = tempStartPercentage;
                deliverablesProduced.endPercentComplete   = tempEndPercentage;
                deliverablesProduced.result = tempResult;

                timeSpents.Add(timeSpent);
                tasksCompleteds.Add(tasksCompleted);
                deliverablesProduceds.Add(deliverablesProduced);
            }
            newTimeSheetModel.timeSheetForm.timeSpents           = timeSpents;
            newTimeSheetModel.timeSheetForm.tasksCompleted       = tasksCompleteds;
            newTimeSheetModel.timeSheetForm.deliverablesProduced = deliverablesProduceds;

            List <VersionControl <TimeSheetModel> .DocumentModel> documentModels = versionControl.DocumentModels;

            if (!versionControl.isEqual(currentTimeSheetModel, newTimeSheetModel))
            {
                VersionControl <TimeSheetModel> .DocumentModel documentModel = new VersionControl <TimeSheetModel> .DocumentModel(newTimeSheetModel, DateTime.Now, VersionControl <ProjectModel> .generateID());

                documentModels.Add(documentModel);
                versionControl.DocumentModels = documentModels;

                string json = JsonConvert.SerializeObject(versionControl);
                currentTimeSheetModel = JsonConvert.DeserializeObject <TimeSheetModel>(JsonConvert.SerializeObject(newTimeSheetModel));
                JsonHelper.saveDocument(json, Settings.Default.ProjectID, "TimeSheet");
                MessageBox.Show("Time sheet saved successfully", "save", MessageBoxButtons.OK);
            }
        }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(txtProjectId.Text))
                {
                    showAlertError("alertProjectId", "กรุณากรอก Project Id");
                    return;
                }
                if (string.IsNullOrEmpty(txtUsername.Text))
                {
                    showAlertError("alertUsernameErr", "กรุณากรอก Username");
                    return;
                }
                if (string.IsNullOrEmpty(txtDes.Text))
                {
                    showAlertError("alertDesErr", "กรุณากรอก Description");
                    return;
                }
                if (string.IsNullOrWhiteSpace(ddlHours.SelectedValue))
                {
                    showAlertError("alertHoursErr", "กรุณาเลือก Hours");
                    return;
                }

                DateTime timestamp = DateTime.Now;
                string   timenow   = timestamp.ToString("yyyy-MM-dd HH:mm:ss");

                string textProjectId   = txtProjectId.Text;
                string textUsername    = txtUsername.Text;
                string textDescription = txtDes.Text;
                float  textHours       = float.Parse(ddlHours.SelectedItem.Value);
                string textCreatedDate = timenow;

                string path = @"D:\Cshap\Web-Sudarat\TimeSheet\TimeSheet\View\Sheet\NewSheet.txt";
                List <TimeSheetModel> TcModel = new List <TimeSheetModel>();
                List <string>         lines   = File.ReadAllLines(path).ToList();

                foreach (var line in lines)
                {
                    string[]       list = line.Split('|');
                    TimeSheetModel tc   = new TimeSheetModel();

                    tc.Id          = Convert.ToInt32(list[0]);
                    tc.ProjectId   = list[1];
                    tc.Username    = list[2];
                    tc.Description = list[3];
                    tc.Hours       = (float)Convert.ToDouble(list[4]);
                    tc.CreatedDate = list[5];
                    TcModel.Add(tc);
                }
                var row = lines.Count + 1;
                TcModel.Add(new TimeSheetModel
                {
                    Id          = row,
                    ProjectId   = textProjectId,
                    Username    = textUsername,
                    Description = textDescription,
                    Hours       = textHours,
                    CreatedDate = textCreatedDate
                });

                List <string> txtfile = new List <string>();
                foreach (var sheets in TcModel)
                {
                    txtfile.Add($"{sheets.Id}|{sheets.ProjectId}|{sheets.Username}|{sheets.Description}|{sheets.Hours}|{sheets.CreatedDate}");
                }
                File.WriteAllLines(path, txtfile);
                showAlertSuccess("alertSuccess", "Insert Success");
            }
            catch (SqlException sqlEx)
            {
                showAlertError("alertSqlErr", sqlEx.Message);
            }
            catch (Exception ex)
            {
                showAlertError("alertErr", ex.Message);
            }
        }
Example #23
0
        public List <TimeSheetModel> GetMyTimeSheet(Int64 UserID, DateTime FromDate, DateTime ToDate)
        {
            List <TimeSheetModel>  timeSheetModelList  = new List <TimeSheetModel>();
            List <ShiftQueryModel> ShiftQueryModelList = GetShiftDetails(UserID, FromDate, ToDate);

            string PersonalPermisionLabel = ConfigurationManager.AppSettings["PersonalPermission"].ToString();
            string officialPermisionLabel = ConfigurationManager.AppSettings["OfficialPermission"].ToString();

            var toDateShift = (from m in ShiftQueryModelList where m.ShiftDate == ToDate select new { fromTime = m.ShiftFromtime, toTime = m.ShiftTotime }).FirstOrDefault();

            if (toDateShift != null)
            {
                TimeSpan fromTime = toDateShift.fromTime;
                TimeSpan toTime   = toDateShift.toTime;
                if (fromTime > toTime)
                {
                    ToDate = ToDate.AddDays(1).Add(toTime.Add(new TimeSpan(AfterShiftBuffer, 0, 0)));
                }
                else
                {
                    ToDate = ToDate.Add(toTime.Add(new TimeSpan(AfterShiftBuffer, 0, 0)));
                }
            }

            IEmployeeAttendanceHelper EmployeeAttendanceDacObj = new EmployeeAttendanceDac();

            //To Retrieve the Employee Attendance for the given date.
            List <EmployeeAttendanceModel> EmployeeAttendanceList = EmployeeAttendanceDacObj.GetAttendanceForRange(UserID, FromDate, ToDate, "My", true, false);

            // To Get the Employee name
            EmployeeProfile EmployeeProfileObj = new EmployeeDac().GetEmployeeProfile(UserID);
            string          name             = string.Empty;
            string          reportingManager = string.Empty;
            DateTime?       employeeDOJ      = null;

            if (EmployeeProfileObj != null)
            {
                name             = EmployeeProfileObj.FirstName + ' ' + EmployeeProfileObj.LastName;
                reportingManager = EmployeeProfileObj.ReportedToName;
                employeeDOJ      = EmployeeProfileObj.DOJ;
            }

            // To get the employee week off Days
            OfficeWeekOffDac officeWeekOffDacObj  = new OfficeWeekOffDac();
            List <string>    officeWeekOffDayList = officeWeekOffDacObj.GetEmployeeWeekOffDay(UserID);

            // To get the employee Holiday List
            OfficeHolidayDac     officeHolidayDacObj = new OfficeHolidayDac();
            List <OfficeHoliday> officeHolidayList   = officeHolidayDacObj.GetOfficeHoliday(UserID);

            // To get the employee Leave Details
            LeaveTransactionHistoryDac leaveTransactionHistoryDacObj = new LeaveTransactionHistoryDac();
            List <EmployeeLeave>       employeeLeaveList             = leaveTransactionHistoryDacObj.GetLeaveForEmployee(UserID, FromDate, ToDate);

            for (int i = 0; i < ShiftQueryModelList.Count(); i++)
            {
                decimal        permissionCountOfficial = 0, permissionCountPersonal = 0, LeaveDayQty = 0, WorkFromHomeDayQty = 0;
                TimeSheetModel TimeSheetModelObj = new TimeSheetModel();
                DateTime       shiftFromDateTime = ShiftQueryModelList[i].ShiftDate.Add(ShiftQueryModelList[i].ShiftFromtime.Add(new TimeSpan(-BeforeShiftBuffer, 0, 0)));
                DateTime       shiftEndDateTime  = ShiftQueryModelList[i].ShiftDate.Add(ShiftQueryModelList[i].ShiftTotime.Add(new TimeSpan(AfterShiftBuffer, 0, 0)));

                if (shiftEndDateTime < shiftFromDateTime)
                {
                    shiftEndDateTime = shiftEndDateTime.AddDays(1);
                }
                // To add the employee basic details
                TimeSheetModelObj.Shift            = ShiftQueryModelList[i].ShiftFromtime.ToString(@"hh\:mm") + '-' + ShiftQueryModelList[i].ShiftTotime.ToString(@"hh\:mm");
                TimeSheetModelObj.userID           = UserID;
                TimeSheetModelObj.Name             = name;
                TimeSheetModelObj.ReportingManager = reportingManager;
                TimeSheetModelObj.WorkingDate      = ShiftQueryModelList[i].ShiftDate;
                // Linq query to find the min and max for the given date
                var maxmin = from s in EmployeeAttendanceList
                             where s.InOutDate >= shiftFromDateTime && s.InOutDate <= shiftEndDateTime
                             group s by true into r
                             select new
                {
                    min = r.Min(z => z.InOutDate),
                    max = r.Max(z => z.InOutDate)
                };
                if (maxmin != null && maxmin.Count() > 0)
                {
                    TimeSheetModelObj.InTime  = maxmin.ToList()[0].min;
                    TimeSheetModelObj.OutTime = maxmin.ToList()[0].max;
                    if (employeeLeaveList.Select(e => e.LeaveType == officialPermisionLabel).Count() > 0)
                    {
                        foreach (var permissionTime in employeeLeaveList)
                        {
                            if (permissionTime.StartDate == TimeSheetModelObj.WorkingDate && permissionTime.LeaveType == officialPermisionLabel)
                            {
                                permissionCountOfficial += permissionTime.PermissionCount;
                            }
                        }
                    }

                    if (employeeLeaveList.Select(e => e.LeaveType == PersonalPermisionLabel).Count() > 0)
                    {
                        foreach (var permissionTime in employeeLeaveList)
                        {
                            if (permissionTime.StartDate == TimeSheetModelObj.WorkingDate && permissionTime.LeaveType == PersonalPermisionLabel)
                            {
                                permissionCountPersonal += permissionTime.PermissionCount;
                            }
                        }
                    }

                    if (employeeLeaveList.Select(e => e.LeaveTypeId = 0).Count() > 0)
                    {
                        foreach (var permissionTime in employeeLeaveList)
                        {
                            if (permissionTime.StartDate == TimeSheetModelObj.WorkingDate && permissionTime.LeaveDayQty != 0 && permissionTime.IsLeave == true)
                            {
                                LeaveDayQty += permissionTime.LeaveDayQty;
                            }
                        }
                    }

                    if (employeeLeaveList.Select(e => e.LeaveTypeId = 0).Count() > 0)
                    {
                        foreach (var permissionTime in employeeLeaveList)
                        {
                            if (permissionTime.StartDate == TimeSheetModelObj.WorkingDate && permissionTime.WorkFromHomeDayQty != 0 && permissionTime.IsLeave == false)
                            {
                                WorkFromHomeDayQty += permissionTime.WorkFromHomeDayQty;
                            }
                        }
                    }

                    TimeSheetModelObj.WorkingHours = TimeSheetModelObj.OutTime - TimeSheetModelObj.InTime;

                    if (TimeSheetModelObj.WorkingDate < employeeDOJ)
                    {
                        TimeSheetModelObj.Status = "Non-Employee (DOJ: " + String.Format("{0:dd-MM-yyyy}", employeeDOJ) + ")";
                    }
                    else
                    {
                        string holidayStatus = GetAbsentStatus(ShiftQueryModelList[i].ShiftDate, officeWeekOffDayList, officeHolidayList);

                        if (holidayStatus == "")
                        {
                            TimeSheetModelObj.Status = "Present";
                        }
                        else
                        {
                            TimeSheetModelObj.Status        = "Present (" + holidayStatus + ")";
                            TimeSheetModelObj.HolidayStatus = holidayStatus;
                        }
                    }


                    if (TimeSheetModelObj.InTime.TimeOfDay > ShiftQueryModelList[i].ShiftFromtime)
                    {
                        TimeSheetModelObj.LateIn = TimeSheetModelObj.InTime.TimeOfDay - ShiftQueryModelList[i].ShiftFromtime;
                    }

                    DateTime shiftToTime   = ShiftQueryModelList[i].ShiftDate.Add(ShiftQueryModelList[i].ShiftTotime);
                    DateTime shiftFromTime = ShiftQueryModelList[i].ShiftDate.Add(ShiftQueryModelList[i].ShiftFromtime);
                    if (shiftToTime < shiftFromTime)
                    {
                        shiftToTime = shiftToTime.AddDays(1);
                    }
                    if (shiftToTime > TimeSheetModelObj.OutTime)
                    {
                        TimeSheetModelObj.EarlyOut = ShiftQueryModelList[i].ShiftTotime - TimeSheetModelObj.OutTime.TimeOfDay;
                    }
                }
                else// If no record found in the employee for the given date
                {
                    if (TimeSheetModelObj.WorkingDate < employeeDOJ)
                    {
                        TimeSheetModelObj.Status = "Non-Employee (DOJ: " + String.Format("{0:dd-MM-yyyy}", employeeDOJ) + ")";
                    }
                    else
                    {
                        // Get Absent Details
                        string holidayStatus = GetAbsentStatus(ShiftQueryModelList[i].ShiftDate, officeWeekOffDayList, officeHolidayList);
                        TimeSheetModelObj.Status        = holidayStatus;
                        TimeSheetModelObj.HolidayStatus = holidayStatus;
                    }

                    if (employeeLeaveList.Select(e => e.LeaveType == officialPermisionLabel).Count() > 0)
                    {
                        foreach (var permissionTime in employeeLeaveList)
                        {
                            if (permissionTime.StartDate == TimeSheetModelObj.WorkingDate && permissionTime.LeaveType == officialPermisionLabel)
                            {
                                permissionCountOfficial += permissionTime.PermissionCount;
                            }
                        }
                    }

                    if (employeeLeaveList.Select(e => e.LeaveType == PersonalPermisionLabel).Count() > 0)
                    {
                        foreach (var permissionTime in employeeLeaveList)
                        {
                            if (permissionTime.StartDate == TimeSheetModelObj.WorkingDate && permissionTime.LeaveType == PersonalPermisionLabel)
                            {
                                permissionCountPersonal += permissionTime.PermissionCount;
                            }
                        }
                    }

                    if (employeeLeaveList.Select(e => e.LeaveTypeId = 0).Count() > 0)
                    {
                        foreach (var permissionTime in employeeLeaveList)
                        {
                            if (permissionTime.StartDate == TimeSheetModelObj.WorkingDate && permissionTime.LeaveDayQty != 0 && permissionTime.IsLeave == true)
                            {
                                LeaveDayQty += permissionTime.LeaveDayQty;
                            }
                        }
                    }
                    if (employeeLeaveList.Select(e => e.LeaveTypeId = 0).Count() > 0)
                    {
                        foreach (var permissionTime in employeeLeaveList)
                        {
                            if (permissionTime.StartDate == TimeSheetModelObj.WorkingDate && permissionTime.WorkFromHomeDayQty != 0 && permissionTime.IsLeave == false)
                            {
                                WorkFromHomeDayQty += permissionTime.WorkFromHomeDayQty;
                            }
                        }
                    }
                }

                // To get the employee Leave Details
                TimeSheetModelObj.Requests      = GetLMSStatus(employeeLeaveList, ShiftQueryModelList[i].ShiftDate);
                TimeSheetModelObj.StartDateType = GetHalfDayLMSType(employeeLeaveList, ShiftQueryModelList[i].ShiftDate, out string StartDateType);
                TimeSheetModelObj.EndDateType   = GetHalfDayLMSType(employeeLeaveList, ShiftQueryModelList[i].ShiftDate, out string EndDateType);

                TimeSheetModelObj.LeaveDayQty        = LeaveDayQty;
                TimeSheetModelObj.WorkFromHomeDayQty = WorkFromHomeDayQty;
                TimeSheetModelObj.PermissionCount    = permissionCountPersonal;

                TimeSheetModelObj.permissionCountOfficial = permissionCountOfficial;
                TimeSheetModelObj.permissionCountPersonal = permissionCountPersonal;

                timeSheetModelList.Add(TimeSheetModelObj);
            }

            return(timeSheetModelList.OrderByDescending(m => m.WorkingDate).ToList());
        }
Example #24
0
        public JsonResult getTimeSheet(string dateSelected)
        {
            string str = " to ";

            string[]         dates      = dateSelected.Split(str.ToCharArray());
            var              day1       = DateTime.Parse(dates[0]);
            var              timesheets = es.getTimeSheet(DateTime.Parse(dates[0]), User.Identity.Name);
            List <TimeInOut> timeinouts = new List <TimeInOut>();

            if (timesheets != null && timesheets.TimeInOuts != null)
            {
                timeinouts = timesheets.TimeInOuts.ToList();
            }
            ModelStack           mdl       = new ModelStack();
            TimeSheetModel       tsm       = new TimeSheetModel();
            TimeSheetItem        tItem     = new TimeSheetItem();
            List <TimeSheetItem> timeItems = new List <TimeSheetItem>();

            var svc = Session["svc"] == null?es.getServiceCodes() : (List <serviceCode>)Session["svc"];

            var plans = Session["plans"] == null?es.getPlans() : (List <planSection>)Session["plans"];

            Session["svc"]   = svc;
            Session["plans"] = plans;
            tsm.empName      = Session["username"] == null?es.getUsername(User.Identity.Name) : Session["username"].ToString();

            Session["username"] = tsm.empName;

            svc srv = new Models.svc();

            tsm.serviceCodes = new List <Models.svc>();
            tsm.PlanSections = new List <plan>();
            foreach (var item in svc)
            {
                srv.Id   = item.Id;
                srv.Name = item.Name;
                tsm.serviceCodes.Add(srv);
                srv = new Models.svc();
            }
            plan pln = new Models.plan();

            foreach (var item in plans)
            {
                pln.Id   = item.Id;
                pln.Name = item.Name;
                tsm.PlanSections.Add(pln);
                pln = new Models.plan();
            }
            if (timesheets == null)
            {
                tsm.Id         = 0;
                tsm.isViewOnly = false;
                tsm.isBackup   = null;
                tsm.isLiveIn   = null;
                tsm.startDate  = day1;
                tsm.items      = new List <TimeSheetItem>();
                for (int i = 0; i < 7; i++)
                {
                    tItem.Id      = 0;
                    tItem.dayDate = day1.ToShortDateString();
                    tItem.dayName = day1.ToString("dddd");
                    day1          = day1.AddDays(1);
                    tItem.dates   = dates;
                    tItem.times   = new List <times>();
                    tItem.times.Add(new times());
                    tsm.items.Add(tItem);
                    tItem = new TimeSheetItem();
                }
            }
            else
            {
                tsm.Id = timesheets.Id;

                if (timesheets.isDraft != null && timesheets.isDraft.Value == true)
                {
                    tsm.isViewOnly = false;
                    tsm.isDraft    = true;
                }
                else
                {
                    tsm.isViewOnly = true;
                    tsm.isDraft    = false;
                }
                if (timesheets.isBackup != null)
                {
                    tsm.isBackup = timesheets.isBackup.Value;
                }
                if (timesheets.isLiveIn != null)
                {
                    tsm.isLiveIn = timesheets.isLiveIn.Value;
                }
                if (timesheets.DayDate != null)
                {
                    tsm.startDate = timesheets.DayDate.Value;
                }
                tsm.items = new List <TimeSheetItem>();


                if (timesheets.fk_statusid == 3)
                {
                    tsm.isViewOnly = false;
                    for (int i = 0; i < 7; i++)
                    {
                        var items      = timeinouts.Where(x => x.dayDate.Value.Date.ToShortDateString() == day1.ToShortDateString()).ToList();
                        var dateditems = items.GroupBy(x => x.dayDate);
                        if (items.Count > 0)
                        {
                            foreach (var itemsvals in dateditems)
                            {
                                var itemvals = itemsvals.ToList();
                                var time2    = false;
                                foreach (var item in itemvals)
                                {
                                    if (time2 == false)
                                    {
                                        time2 = item.TimeIn2H1 != null;
                                    }
                                    tItem.Id      = item.Id;
                                    tItem.dayDate = item.dayDate.Value.Date.ToShortDateString();;
                                    tItem.dayName = item.dayDate.Value.ToString("dddd"); //config
                                    if (tsm.HasTime2 != true)
                                    {
                                        tsm.HasTime2 = item.TimeIn2H1 != null;
                                    }
                                    times timesitem = new times();
                                    if (item.fk_plansection != null)
                                    {
                                        timesitem.plansectionId = item.fk_plansection.Value;
                                    }
                                    if (item.isInAM != null)
                                    {
                                        timesitem.isAmIn = item.isInAM.Value.ToString().ToLower();
                                    }
                                    if (item.isOutAM != null)
                                    {
                                        timesitem.isAmOut = item.isOutAM.Value.ToString().ToLower();
                                    }
                                    if (item.fk_serviceCode != null)
                                    {
                                        timesitem.serviceCodeId = item.fk_serviceCode.Value;
                                    }
                                    //time.serviceCodes = svc;
                                    if (item.TimeInH1 != null)
                                    {
                                        timesitem.TimeInH1 = item.TimeInH1.ToString();
                                    }
                                    if (item.TimeInM1 != null)
                                    {
                                        timesitem.TimeInM1 = item.TimeInM1.ToString();
                                    }
                                    if (item.TimeOutH1 != null)
                                    {
                                        timesitem.TimeOutH1 = item.TimeOutH1.ToString();
                                    }
                                    if (item.TimeOutM1 != null)
                                    {
                                        timesitem.TimeOutM1 = item.TimeOutM1.ToString();
                                    }

                                    if (item.TimeIn2H1 != null)
                                    {
                                        if (item.TimeIn2H1 != null)
                                        {
                                            timesitem.TimeIn2H1 = item.TimeIn2H1.ToString();
                                        }
                                        if (item.TimeIn2M1 != null)
                                        {
                                            timesitem.TimeIn2M1 = item.TimeIn2M1.ToString();
                                        }
                                        if (item.TimeOut2H1 != null)
                                        {
                                            timesitem.TimeOut2H1 = item.TimeOut2H1.ToString();
                                        }
                                        if (item.TimeOut2M1 != null)
                                        {
                                            timesitem.TimeOut2M1 = item.TimeOut2M1.ToString();
                                        }
                                        if (item.isInAM2 != null)
                                        {
                                            timesitem.isAmIn2 = item.isInAM2.Value.ToString().ToLower();
                                        }
                                        if (item.isOutAM2 != null)
                                        {
                                            timesitem.isAmOut2 = item.isOutAM2.Value.ToString().ToLower();
                                        }
                                        timesitem.Time2 = true;
                                        tsm.HasTime2    = true;
                                    }
                                    else
                                    {
                                        timesitem.Time2 = time2;
                                    }
                                    tItem.dates = dates;
                                    if (tItem.times == null)
                                    {
                                        tItem.times = new List <times>();
                                    }
                                    tItem.times.Add(timesitem);
                                    // tItem.serviceCodeId = item.serviceCode.Id;
                                }
                                tsm.items.Add(tItem);

                                tItem = new TimeSheetItem();
                            }
                        }
                        else
                        {
                            tItem.Id      = 0;
                            tItem.dayDate = day1.ToShortDateString();

                            tItem.dayName = day1.ToString("dddd");
                            tItem.dates   = dates;
                            tItem.times   = new List <times>();
                            tItem.times.Add(new times());

                            tsm.items.Add(tItem);
                        }
                        day1  = day1.AddDays(1);
                        tItem = new TimeSheetItem();
                    }
                }

                else
                {
                    var items      = timeinouts;
                    var dateditems = items.GroupBy(x => x.dayDate);
                    foreach (var itemsvals in dateditems)
                    {
                        var itemvals = itemsvals.ToList();
                        var time2    = false;
                        foreach (var item in itemvals)
                        {
                            if (time2 == false)
                            {
                                time2 = item.TimeIn2H1 != null;
                            }
                            tItem.Id      = item.Id;
                            tItem.dayDate = item.dayDate.Value.Date.ToShortDateString();;
                            tItem.dayName = item.dayDate.Value.ToString("dddd"); //config
                            if (tsm.HasTime2 != true)
                            {
                                tsm.HasTime2 = item.TimeIn2H1 != null;
                            }
                            times timesitem = new times();
                            if (item.fk_plansection != null)
                            {
                                timesitem.plansectionId = item.fk_plansection.Value;
                            }
                            if (item.isInAM != null)
                            {
                                timesitem.isAmIn = item.isInAM.Value.ToString().ToLower();
                            }
                            if (item.isOutAM != null)
                            {
                                timesitem.isAmOut = item.isOutAM.Value.ToString().ToLower();
                            }
                            if (item.fk_serviceCode != null)
                            {
                                timesitem.serviceCodeId = item.fk_serviceCode.Value;
                            }
                            //time.serviceCodes = svc;
                            if (item.TimeInH1 != null)
                            {
                                timesitem.TimeInH1 = item.TimeInH1.ToString();
                            }
                            if (item.TimeInM1 != null)
                            {
                                timesitem.TimeInM1 = item.TimeInM1.ToString();
                            }
                            if (item.TimeOutH1 != null)
                            {
                                timesitem.TimeOutH1 = item.TimeOutH1.ToString();
                            }
                            if (item.TimeOutM1 != null)
                            {
                                timesitem.TimeOutM1 = item.TimeOutM1.ToString();
                            }

                            if (item.TimeIn2H1 != null)
                            {
                                if (item.TimeIn2H1 != null)
                                {
                                    timesitem.TimeIn2H1 = item.TimeIn2H1.ToString();
                                }
                                if (item.TimeIn2M1 != null)
                                {
                                    timesitem.TimeIn2M1 = item.TimeIn2M1.ToString();
                                }
                                if (item.TimeOut2H1 != null)
                                {
                                    timesitem.TimeOut2H1 = item.TimeOut2H1.ToString();
                                }
                                if (item.TimeOut2M1 != null)
                                {
                                    timesitem.TimeOut2M1 = item.TimeOut2M1.ToString();
                                }
                                if (item.isInAM2 != null)
                                {
                                    timesitem.isAmIn2 = item.isInAM2.Value.ToString().ToLower();
                                }
                                if (item.isOutAM2 != null)
                                {
                                    timesitem.isAmOut2 = item.isOutAM2.Value.ToString().ToLower();
                                }
                                timesitem.Time2 = true;
                                tsm.HasTime2    = true;
                            }
                            else
                            {
                                timesitem.Time2 = time2;
                            }

                            tItem.dates = dates;


                            if (tItem.times == null)
                            {
                                tItem.times = new List <times>();
                            }
                            tItem.times.Add(timesitem);
                            // tItem.serviceCodeId = item.serviceCode.Id;
                        }

                        if (time2 == true)
                        {
                            foreach (var item in tItem.times)
                            {
                                item.Time2 = true;
                            }
                        }

                        timeItems.Add(tItem);

                        tItem = new TimeSheetItem();
                    }
                    tsm.items = timeItems;
                }
            }
            mdl.model      = tsm;
            mdl.modelstack = new List <TimeSheetModel>();
            // mdl.modelstack.Add(tsm);
            return(Json(mdl));
        }
        public List <TimeSheetModel> GetTimeSheetsByEmployeeIdAndDate(GetTimeSheetModel data)
        {
            string StartDate = "01." + data.month + "." + data.year;
            string EndDate   = "";

            if (data.month == "2")
            {
                EndDate = "28." + data.month + "." + data.year;
            }
            else if ((data.month == "1") || (data.month == "3") || (data.month == "5") || (data.month == "7") ||
                     (data.month == "8") || (data.month == "10") || (data.month == "12"))
            {
                EndDate = "31." + data.month + "." + data.year;
            }
            else
            {
                EndDate = "30." + data.month + "." + data.year;
            }


            TimeSheetModel        TS         = null;
            List <TimeSheetModel> timeSheets = null;

            try
            {
                using (var con = db.Gdb())
                {
                    timeSheets = new List <TimeSheetModel>();
                    SqlCommand cmd = new SqlCommand("dbo.spGetTimeSheetByIdDate", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@id", data.id);
                    cmd.Parameters.AddWithValue("@monthStart", Convert.ToDateTime(StartDate));
                    cmd.Parameters.AddWithValue("@monthEnd", Convert.ToDateTime(EndDate));
                    con.Open();

                    SqlDataReader rd = cmd.ExecuteReader();

                    while (rd.Read())
                    {
                        TS                 = new TimeSheetModel();
                        TS.id              = Convert.ToInt32(rd["id"]);
                        TS.timeSheetKey    = Convert.ToString(rd["timeSheetKey"]);
                        TS.type            = Convert.ToString(rd["type"]);
                        TS.startTime       = Convert.ToString(rd["start_time"]);
                        TS.endTime         = Convert.ToString(rd["end_time"]);
                        TS.breaks          = Convert.ToString(rd["breaks"]);
                        TS.workTime        = Convert.ToString(rd["work_time"]);
                        TS.notes           = Convert.ToString(rd["notes"]);
                        TS.entryDate       = Convert.ToDateTime(rd["entryDate"]);
                        TS.timeSheetStatus = Convert.ToString(rd["timeSheetStatus"]);
                        TS.m3              = Convert.ToInt32(rd["m3"]);
                        TS.kmStand         = Convert.ToInt32(rd["km_stand"]);
                        TS.privat          = Convert.ToInt32(rd["privat"]);
                        TS.fuel            = Convert.ToInt32(rd["fuel"]);
                        TS.adblue          = Convert.ToInt32(rd["adblue"]);

                        TS.UserId = Convert.ToInt32(rd["employeeId"]);

                        timeSheets.Add(TS);
                    }
                    con.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }


            return(timeSheets);
        }
        //After new User creation this method create time sheet, after employee aproval it creates rest of time sheets
        public static void CreateTimeSheet(EmployeeModel user)
        {
            var arr = 0;

            if (user.level == "User")
            {
                using (var con = db.Gdb())
                {
                    SqlCommand cmdd = new SqlCommand($"SELECT * FROM TimeSheets WHERE employeeId = '{user.id}'", con);
                    con.Open();
                    SqlDataReader rd = cmdd.ExecuteReader();

                    TimeSheetModel        TS     = new TimeSheetModel();
                    List <TimeSheetModel> TSList = new List <TimeSheetModel>();

                    string month = null;
                    string year  = null;
                    string TSKey = null;

                    while (rd.Read())
                    {
                        TS                 = new TimeSheetModel();
                        TS.id              = Convert.ToInt32(rd["id"]);
                        TS.timeSheetKey    = Convert.ToString(rd["timeSheetKey"]);
                        TS.type            = Convert.ToString(rd["type"]);
                        TS.startTime       = Convert.ToString(rd["start_time"]);
                        TS.endTime         = Convert.ToString(rd["end_time"]);
                        TS.breaks          = Convert.ToString(rd["breaks"]);
                        TS.workTime        = Convert.ToString(rd["work_time"]);
                        TS.notes           = Convert.ToString(rd["notes"]);
                        TS.entryDate       = Convert.ToDateTime(rd["entryDate"]);
                        TS.timeSheetStatus = Convert.ToString(rd["timeSheetStatus"]);
                        TS.m3              = Convert.ToInt32(rd["m3"]);
                        TS.kmStand         = Convert.ToInt32(rd["km_stand"]);
                        TS.privat          = Convert.ToInt32(rd["privat"]);
                        TS.fuel            = Convert.ToInt32(rd["fuel"]);
                        TS.adblue          = Convert.ToInt32(rd["adblue"]);

                        TS.UserId = Convert.ToInt32(rd["employeeId"]);

                        TSList.Add(TS);
                    }
                    con.Close();



                    if (TSList.Count == 0)
                    {
                        month = DateTime.Now.Month.ToString();
                        year  = DateTime.Now.Year.ToString();
                        TSKey = user.userName.ToString() + "-" + month + "-" + year;
                    }
                    else
                    {
                        var lastDateEntry = TSList[TSList.Count - 1].entryDate;
                        var nextMonth     = lastDateEntry.AddMonths(1);

                        month = Convert.ToString(nextMonth.Month);
                        year  = Convert.ToString(nextMonth.Year);
                        TSKey = user.userName.ToString() + "-" + month + "-" + year;
                    }
                    if (month == "2")
                    {
                        for (int i = 0; i < 28; i++)
                        {
                            string     date = (i + 1) + "." + month + "." + year + " " + DateTime.Now.Hour + ":" + DateTime.Now.Minute;
                            SqlCommand cmd  = new SqlCommand("dbo.spCreateTimeSheetsByEmpId", con);
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.AddWithValue("@id", user.id);
                            cmd.Parameters.AddWithValue("@timeSheetKey", TSKey);
                            cmd.Parameters.AddWithValue("@entryDate", Convert.ToDateTime(date));
                            cmd.Parameters.AddWithValue("@timeSheetStatus", "working progress");
                            con.Open();
                            arr = cmd.ExecuteNonQuery();
                            con.Close();
                        }
                    }
                    else if ((month == "1") || (month == "3") || (month == "5") || (month == "7") ||
                             (month == "8") || (month == "10") || (month == "12"))
                    {
                        for (int i = 0; i < 31; i++)
                        {
                            string     date = (i + 1) + "." + month + "." + year + " " + DateTime.Now.Hour + ":" + DateTime.Now.Minute;
                            SqlCommand cmd  = new SqlCommand("dbo.spCreateTimeSheetsByEmpId", con);
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.AddWithValue("@id", user.id);
                            cmd.Parameters.AddWithValue("@timeSheetKey", TSKey);
                            cmd.Parameters.AddWithValue("@entryDate", Convert.ToDateTime(date));
                            cmd.Parameters.AddWithValue("@timeSheetStatus", "working progress");
                            con.Open();
                            arr = cmd.ExecuteNonQuery();
                            con.Close();
                        }
                    }
                    else
                    {
                        for (int i = 0; i < 30; i++)
                        {
                            string     date = (i + 1) + "." + month + "." + year + " " + DateTime.Now.Hour + ":" + DateTime.Now.Minute;
                            SqlCommand cmd  = new SqlCommand("dbo.spCreateTimeSheetsByEmpId", con);
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.AddWithValue("@id", user.id);
                            cmd.Parameters.AddWithValue("@timeSheetKey", TSKey);
                            cmd.Parameters.AddWithValue("@entryDate", Convert.ToDateTime(date));
                            cmd.Parameters.AddWithValue("@timeSheetStatus", "working progress");
                            con.Open();
                            arr = cmd.ExecuteNonQuery();
                            con.Close();
                        }
                    }
                    con.Close();
                }
            }
        }
        public void Save(TimeSheetModel timesheetmodel, int TimeSheetMasterID)
        {
            try
            {
                if (timesheetmodel.ProjectID1 != null && (timesheetmodel.texttotal_p1 != null && timesheetmodel.texttotal_p1 != 0))
                {
                    #region Project 1
                    var date1       = timesheetmodel.hdtext1;
                    var DaysofWeek1 = timesheetmodel.DaysofWeek1;
                    var value1      = timesheetmodel.text1_p1;
                    SaveTimeSheetDetail(DaysofWeek1, value1, date1, timesheetmodel.ProjectID1, TimeSheetMasterID);

                    var date2       = timesheetmodel.hdtext2;
                    var DaysofWeek2 = timesheetmodel.DaysofWeek2;
                    var value2      = timesheetmodel.text2_p1;
                    SaveTimeSheetDetail(DaysofWeek2, value2, date2, timesheetmodel.ProjectID1, TimeSheetMasterID);

                    var date3       = timesheetmodel.hdtext3;
                    var DaysofWeek3 = timesheetmodel.DaysofWeek3;
                    var value3      = timesheetmodel.text3_p1;
                    SaveTimeSheetDetail(DaysofWeek3, value3, date3, timesheetmodel.ProjectID1, TimeSheetMasterID);

                    var date4       = timesheetmodel.hdtext4;
                    var DaysofWeek4 = timesheetmodel.DaysofWeek4;
                    var value4      = timesheetmodel.text4_p1;
                    SaveTimeSheetDetail(DaysofWeek4, value4, date4, timesheetmodel.ProjectID1, TimeSheetMasterID);

                    var date5       = timesheetmodel.hdtext5;
                    var DaysofWeek5 = timesheetmodel.DaysofWeek5;
                    var value5      = timesheetmodel.text5_p1;
                    SaveTimeSheetDetail(DaysofWeek5, value5, date5, timesheetmodel.ProjectID1, TimeSheetMasterID);

                    var date6       = timesheetmodel.hdtext6;
                    var DaysofWeek6 = timesheetmodel.DaysofWeek6;
                    var value6      = timesheetmodel.text6_p1;
                    SaveTimeSheetDetail(DaysofWeek6, value6, date6, timesheetmodel.ProjectID1, TimeSheetMasterID);

                    var date7       = timesheetmodel.hdtext7;
                    var DaysofWeek7 = timesheetmodel.DaysofWeek7;
                    var value7      = timesheetmodel.text7_p1;
                    SaveTimeSheetDetail(DaysofWeek7, value7, date7, timesheetmodel.ProjectID1, TimeSheetMasterID);


                    #endregion
                }

                if (timesheetmodel.ProjectID2 != null && (timesheetmodel.texttotal_p2 != null && timesheetmodel.texttotal_p2 != 0))
                {
                    #region Project 2
                    var date1       = timesheetmodel.hdtext1;
                    var DaysofWeek1 = timesheetmodel.DaysofWeek1;
                    var value1      = timesheetmodel.text1_p2;
                    SaveTimeSheetDetail(DaysofWeek1, value1, date1, timesheetmodel.ProjectID2, TimeSheetMasterID);

                    var date2       = timesheetmodel.hdtext2;
                    var DaysofWeek2 = timesheetmodel.DaysofWeek2;
                    var value2      = timesheetmodel.text2_p2;
                    SaveTimeSheetDetail(DaysofWeek2, value2, date2, timesheetmodel.ProjectID2, TimeSheetMasterID);

                    var date3       = timesheetmodel.hdtext3;
                    var DaysofWeek3 = timesheetmodel.DaysofWeek3;
                    var value3      = timesheetmodel.text3_p2;
                    SaveTimeSheetDetail(DaysofWeek3, value3, date3, timesheetmodel.ProjectID2, TimeSheetMasterID);

                    var date4       = timesheetmodel.hdtext4;
                    var DaysofWeek4 = timesheetmodel.DaysofWeek4;
                    var value4      = timesheetmodel.text4_p2;
                    SaveTimeSheetDetail(DaysofWeek4, value4, date4, timesheetmodel.ProjectID2, TimeSheetMasterID);

                    var date5       = timesheetmodel.hdtext5;
                    var DaysofWeek5 = timesheetmodel.DaysofWeek5;
                    var value5      = timesheetmodel.text5_p2;
                    SaveTimeSheetDetail(DaysofWeek5, value5, date5, timesheetmodel.ProjectID2, TimeSheetMasterID);

                    var date6       = timesheetmodel.hdtext6;
                    var DaysofWeek6 = timesheetmodel.DaysofWeek6;
                    var value6      = timesheetmodel.text6_p2;
                    SaveTimeSheetDetail(DaysofWeek6, value6, date6, timesheetmodel.ProjectID2, TimeSheetMasterID);

                    var date7       = timesheetmodel.hdtext7;
                    var DaysofWeek7 = timesheetmodel.DaysofWeek7;
                    var value7      = timesheetmodel.text7_p2;
                    SaveTimeSheetDetail(DaysofWeek7, value7, date7, timesheetmodel.ProjectID2, TimeSheetMasterID);


                    #endregion
                }

                if (timesheetmodel.ProjectID3 != null && (timesheetmodel.texttotal_p3 != null && timesheetmodel.texttotal_p3 != 0))
                {
                    #region Project 3
                    var date1       = timesheetmodel.hdtext1;
                    var DaysofWeek1 = timesheetmodel.DaysofWeek1;
                    var value1      = timesheetmodel.text1_p3;
                    SaveTimeSheetDetail(DaysofWeek1, value1, date1, timesheetmodel.ProjectID3, TimeSheetMasterID);

                    var date2       = timesheetmodel.hdtext2;
                    var DaysofWeek2 = timesheetmodel.DaysofWeek2;
                    var value2      = timesheetmodel.text2_p3;
                    SaveTimeSheetDetail(DaysofWeek2, value2, date2, timesheetmodel.ProjectID3, TimeSheetMasterID);

                    var date3       = timesheetmodel.hdtext3;
                    var DaysofWeek3 = timesheetmodel.DaysofWeek3;
                    var value3      = timesheetmodel.text3_p3;
                    SaveTimeSheetDetail(DaysofWeek3, value3, date3, timesheetmodel.ProjectID3, TimeSheetMasterID);

                    var date4       = timesheetmodel.hdtext4;
                    var DaysofWeek4 = timesheetmodel.DaysofWeek4;
                    var value4      = timesheetmodel.text4_p3;
                    SaveTimeSheetDetail(DaysofWeek4, value4, date4, timesheetmodel.ProjectID3, TimeSheetMasterID);

                    var date5       = timesheetmodel.hdtext5;
                    var DaysofWeek5 = timesheetmodel.DaysofWeek5;
                    var value5      = timesheetmodel.text5_p3;
                    SaveTimeSheetDetail(DaysofWeek5, value5, date5, timesheetmodel.ProjectID3, TimeSheetMasterID);

                    var date6       = timesheetmodel.hdtext6;
                    var DaysofWeek6 = timesheetmodel.DaysofWeek6;
                    var value6      = timesheetmodel.text6_p3;
                    SaveTimeSheetDetail(DaysofWeek6, value6, date6, timesheetmodel.ProjectID3, TimeSheetMasterID);

                    var date7       = timesheetmodel.hdtext7;
                    var DaysofWeek7 = timesheetmodel.DaysofWeek7;
                    var value7      = timesheetmodel.text7_p3;
                    SaveTimeSheetDetail(DaysofWeek7, value7, date7, timesheetmodel.ProjectID3, TimeSheetMasterID);


                    #endregion
                }

                if (timesheetmodel.ProjectID4 != null && (timesheetmodel.texttotal_p4 != null && timesheetmodel.texttotal_p4 != 0))
                {
                    #region Project 4
                    var date1       = timesheetmodel.hdtext1;
                    var DaysofWeek1 = timesheetmodel.DaysofWeek1;
                    var value1      = timesheetmodel.text1_p4;
                    SaveTimeSheetDetail(DaysofWeek1, value1, date1, timesheetmodel.ProjectID4, TimeSheetMasterID);

                    var date2       = timesheetmodel.hdtext2;
                    var DaysofWeek2 = timesheetmodel.DaysofWeek2;
                    var value2      = timesheetmodel.text2_p4;
                    SaveTimeSheetDetail(DaysofWeek2, value2, date2, timesheetmodel.ProjectID4, TimeSheetMasterID);

                    var date3       = timesheetmodel.hdtext3;
                    var DaysofWeek3 = timesheetmodel.DaysofWeek3;
                    var value3      = timesheetmodel.text3_p4;
                    SaveTimeSheetDetail(DaysofWeek3, value3, date3, timesheetmodel.ProjectID4, TimeSheetMasterID);

                    var date4       = timesheetmodel.hdtext4;
                    var DaysofWeek4 = timesheetmodel.DaysofWeek4;
                    var value4      = timesheetmodel.text4_p4;
                    SaveTimeSheetDetail(DaysofWeek4, value4, date4, timesheetmodel.ProjectID4, TimeSheetMasterID);

                    var date5       = timesheetmodel.hdtext5;
                    var DaysofWeek5 = timesheetmodel.DaysofWeek5;
                    var value5      = timesheetmodel.text5_p4;
                    SaveTimeSheetDetail(DaysofWeek5, value5, date5, timesheetmodel.ProjectID4, TimeSheetMasterID);

                    var date6       = timesheetmodel.hdtext6;
                    var DaysofWeek6 = timesheetmodel.DaysofWeek6;
                    var value6      = timesheetmodel.text6_p4;
                    SaveTimeSheetDetail(DaysofWeek6, value6, date6, timesheetmodel.ProjectID4, TimeSheetMasterID);

                    var date7       = timesheetmodel.hdtext7;
                    var DaysofWeek7 = timesheetmodel.DaysofWeek7;
                    var value7      = timesheetmodel.text7_p4;
                    SaveTimeSheetDetail(DaysofWeek7, value7, date7, timesheetmodel.ProjectID4, TimeSheetMasterID);


                    #endregion
                }

                if (timesheetmodel.ProjectID5 != null && (timesheetmodel.texttotal_p5 != null && timesheetmodel.texttotal_p5 != 0))
                {
                    #region Project 5
                    var date1       = timesheetmodel.hdtext1;
                    var DaysofWeek1 = timesheetmodel.DaysofWeek1;
                    var value1      = timesheetmodel.text1_p5;
                    SaveTimeSheetDetail(DaysofWeek1, value1, date1, timesheetmodel.ProjectID5, TimeSheetMasterID);

                    var date2       = timesheetmodel.hdtext2;
                    var DaysofWeek2 = timesheetmodel.DaysofWeek2;
                    var value2      = timesheetmodel.text2_p5;
                    SaveTimeSheetDetail(DaysofWeek2, value2, date2, timesheetmodel.ProjectID5, TimeSheetMasterID);

                    var date3       = timesheetmodel.hdtext3;
                    var DaysofWeek3 = timesheetmodel.DaysofWeek3;
                    var value3      = timesheetmodel.text3_p5;
                    SaveTimeSheetDetail(DaysofWeek3, value3, date3, timesheetmodel.ProjectID5, TimeSheetMasterID);

                    var date4       = timesheetmodel.hdtext4;
                    var DaysofWeek4 = timesheetmodel.DaysofWeek4;
                    var value4      = timesheetmodel.text4_p5;
                    SaveTimeSheetDetail(DaysofWeek4, value4, date4, timesheetmodel.ProjectID5, TimeSheetMasterID);

                    var date5       = timesheetmodel.hdtext5;
                    var DaysofWeek5 = timesheetmodel.DaysofWeek5;
                    var value5      = timesheetmodel.text5_p5;
                    SaveTimeSheetDetail(DaysofWeek5, value5, date5, timesheetmodel.ProjectID5, TimeSheetMasterID);

                    var date6       = timesheetmodel.hdtext6;
                    var DaysofWeek6 = timesheetmodel.DaysofWeek6;
                    var value6      = timesheetmodel.text6_p5;
                    SaveTimeSheetDetail(DaysofWeek6, value6, date6, timesheetmodel.ProjectID5, TimeSheetMasterID);

                    var date7       = timesheetmodel.hdtext7;
                    var DaysofWeek7 = timesheetmodel.DaysofWeek7;
                    var value7      = timesheetmodel.text7_p5;
                    SaveTimeSheetDetail(DaysofWeek7, value7, date7, timesheetmodel.ProjectID5, TimeSheetMasterID);


                    #endregion
                }

                if (timesheetmodel.ProjectID6 != null && (timesheetmodel.texttotal_p6 != null && timesheetmodel.texttotal_p6 != 0))
                {
                    #region Project 6
                    var date1       = timesheetmodel.hdtext1;
                    var DaysofWeek1 = timesheetmodel.DaysofWeek1;
                    var value1      = timesheetmodel.text1_p6;
                    SaveTimeSheetDetail(DaysofWeek1, value1, date1, timesheetmodel.ProjectID6, TimeSheetMasterID);

                    var date2       = timesheetmodel.hdtext2;
                    var DaysofWeek2 = timesheetmodel.DaysofWeek2;
                    var value2      = timesheetmodel.text2_p6;
                    SaveTimeSheetDetail(DaysofWeek2, value2, date2, timesheetmodel.ProjectID6, TimeSheetMasterID);

                    var date3       = timesheetmodel.hdtext3;
                    var DaysofWeek3 = timesheetmodel.DaysofWeek3;
                    var value3      = timesheetmodel.text3_p6;
                    SaveTimeSheetDetail(DaysofWeek3, value3, date3, timesheetmodel.ProjectID6, TimeSheetMasterID);

                    var date4       = timesheetmodel.hdtext4;
                    var DaysofWeek4 = timesheetmodel.DaysofWeek4;
                    var value4      = timesheetmodel.text4_p6;
                    SaveTimeSheetDetail(DaysofWeek4, value4, date4, timesheetmodel.ProjectID6, TimeSheetMasterID);

                    var date5       = timesheetmodel.hdtext5;
                    var DaysofWeek5 = timesheetmodel.DaysofWeek5;
                    var value5      = timesheetmodel.text5_p6;
                    SaveTimeSheetDetail(DaysofWeek5, value5, date5, timesheetmodel.ProjectID6, TimeSheetMasterID);

                    var date6       = timesheetmodel.hdtext6;
                    var DaysofWeek6 = timesheetmodel.DaysofWeek6;
                    var value6      = timesheetmodel.text6_p6;
                    SaveTimeSheetDetail(DaysofWeek6, value6, date6, timesheetmodel.ProjectID6, TimeSheetMasterID);

                    var date7       = timesheetmodel.hdtext7;
                    var DaysofWeek7 = timesheetmodel.DaysofWeek7;
                    var value7      = timesheetmodel.text7_p6;
                    SaveTimeSheetDetail(DaysofWeek7, value7, date7, timesheetmodel.ProjectID6, TimeSheetMasterID);


                    #endregion
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        private static async Task EnsureTestAdminAsync(UserManager <EmployeeModel> userManager, ITimeSheetService timeSheetManager)// passing in the Timesheet interface in order to get access to the method addtimesheet
        {
            var testAdmin = await userManager.Users
                            .Where(x => x.UserName == "*****@*****.**")
                            .SingleOrDefaultAsync();

            if (testAdmin != null)
            {
                return;
            }

            testAdmin = new EmployeeModel {
                UserName = "******", Email = "*****@*****.**", rate = 30.5
            };
            await userManager.CreateAsync(testAdmin, "NotSecure123!!");

            await userManager.AddToRoleAsync(testAdmin, Constants.AdministratorRole);

            var timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(4),
                HoursWorked = DateTime.Now.AddHours(4).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet); // method created in order to add the timesheetModel to the database context, Method is located in timesheetService

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(3),
                HoursWorked = DateTime.Now.AddHours(3).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(5),
                HoursWorked = DateTime.Now.AddHours(5).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(5),
                HoursWorked = DateTime.Now.AddHours(5).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(10),
                HoursWorked = DateTime.Now.AddHours(10).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(8),
                HoursWorked = DateTime.Now.AddHours(8).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = new DateTime(DateTime.Now.Year, 10, 1),
                Exit        = new DateTime(DateTime.Now.Year, 10, 1).AddHours(3),
                HoursWorked = new DateTime(DateTime.Now.Year, 10, 1).AddHours(3).Subtract(new DateTime(DateTime.Now.Year, 10, 1)),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = new DateTime(DateTime.Now.Year, 10, 17),
                Exit        = new DateTime(DateTime.Now.Year, 10, 17).AddHours(3),
                HoursWorked = new DateTime(DateTime.Now.Year, 10, 17).AddHours(3).Subtract(new DateTime(DateTime.Now.Year, 10, 17)),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            testAdmin = new EmployeeModel {
                UserName = "******", Email = "*****@*****.**", rate = 25.0
            };
            await userManager.CreateAsync(testAdmin, "Test1!");

            await userManager.AddToRoleAsync(testAdmin, Constants.HRManager);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = new DateTime(DateTime.Now.Year, 10, 1),
                Exit        = new DateTime(DateTime.Now.Year, 10, 1).AddHours(3),
                HoursWorked = new DateTime(DateTime.Now.Year, 10, 1).AddHours(3).Subtract(new DateTime(DateTime.Now.Year, 10, 1)),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(5),
                HoursWorked = DateTime.Now.AddHours(5).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(10),
                HoursWorked = DateTime.Now.AddHours(10).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(8),
                HoursWorked = DateTime.Now.AddHours(8).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(5),
                HoursWorked = DateTime.Now.AddHours(5).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(10),
                HoursWorked = DateTime.Now.AddHours(10).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(8),
                HoursWorked = DateTime.Now.AddHours(8).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(5),
                HoursWorked = DateTime.Now.AddHours(5).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(10),
                HoursWorked = DateTime.Now.AddHours(10).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(8),
                HoursWorked = DateTime.Now.AddHours(8).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            testAdmin = new EmployeeModel {
                UserName = "******", Email = "*****@*****.**", rate = 23.0
            };
            await userManager.CreateAsync(testAdmin, "Test1!");

            await userManager.AddToRoleAsync(testAdmin, Constants.Manager);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = new DateTime(DateTime.Now.Year, 10, 1),
                Exit        = new DateTime(DateTime.Now.Year, 10, 1).AddHours(3),
                HoursWorked = new DateTime(DateTime.Now.Year, 10, 1).AddHours(3).Subtract(new DateTime(DateTime.Now.Year, 10, 1)),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(15),
                HoursWorked = DateTime.Now.AddHours(8).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(5),
                HoursWorked = DateTime.Now.AddHours(5).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(1),
                HoursWorked = DateTime.Now.AddHours(1).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            testAdmin = new EmployeeModel {
                UserName = "******", Email = "*****@*****.**", rate = 20.0
            };
            await userManager.CreateAsync(testAdmin, "Test1!");

            await userManager.AddToRoleAsync(testAdmin, Constants.EmployeeRole);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = new DateTime(DateTime.Now.Year, 10, 1),
                Exit        = new DateTime(DateTime.Now.Year, 10, 1).AddHours(3),
                HoursWorked = new DateTime(DateTime.Now.Year, 10, 1).AddHours(3).Subtract(new DateTime(DateTime.Now.Year, 10, 1)),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(5),
                HoursWorked = DateTime.Now.AddHours(5).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(10),
                HoursWorked = DateTime.Now.AddHours(10).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(8),
                HoursWorked = DateTime.Now.AddHours(8).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(6),
                HoursWorked = DateTime.Now.AddHours(6).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(6),
                HoursWorked = DateTime.Now.AddHours(6).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(7),
                HoursWorked = DateTime.Now.AddHours(7).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(5),
                HoursWorked = DateTime.Now.AddHours(5).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(10),
                HoursWorked = DateTime.Now.AddHours(10).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);

            timeSheet = new TimeSheetModel {
                Id          = new Guid(),
                Enter       = DateTime.Now,
                Exit        = DateTime.Now.AddHours(8),
                HoursWorked = DateTime.Now.AddHours(8).Subtract(DateTime.Now),
                EmployeeId  = new Guid(testAdmin.Id)
            };
            await timeSheetManager.AddTimeSheet(timeSheet);
        }
 /// <summary>
 /// This method is used for adding timesheets into the database context for when we are generating
 /// seed data from the seed data class @see SeedData.cs
 /// </summary>
 /// <param name="timeSheet"></param>
 /// <returns></returns>
 public async Task <bool> AddTimeSheet(TimeSheetModel timeSheet)
 {
     // add new timesheetmodel to the timesheets
     _context.TimeSheets.Add(timeSheet);
     return(await _context.SaveChangesAsync() == 1);
 }
Example #30
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));
        }