public string Check(PunchRequest model) { if (!ModelState.IsValid) { throw new MsgEx(103, "参数不能为空"); } punchService.Check(model); return JsonHelper.Success(); }
public PunchResponse Post(PunchRequest request) { PunchCruncher cruncher = null; try { cruncher = new PunchCruncher( DateTime.Parse(request.PunchIn), DateTime.Parse(request.LunchOut), DateTime.Parse(request.LunchIn), Convert.ToInt32(request.TargetTotalMinutes), Convert.ToBoolean(request.IsLunchOverrideEnabled)); return(new PunchResponse { Result = cruncher.GetPunchOut().ToString(), IsSuccessful = true }); } catch (ArgumentException exception) { return(new PunchResponse { Result = exception.Message, IsSuccessful = false }); } }
public HttpResponseMessage <PunchResponse> Punch(PunchRequest request) { Employee emp = db.Employees.FirstOrDefault(e => e.EmployeeID.Equals(request.ID)); if (!emp.Pin.Equals(request.pin)) // the pin didn't match don't do anything { PunchResponse response = new PunchResponse() { isSuccess = false, pinError = "Pin and user did not match.", lines = null, generalError = null }; return(new HttpResponseMessage <PunchResponse>(response)); } else { var payPeriod = PayPeriodTools.LookupPayPeriod(db, emp.DepartmentID); var curTimeCard = emp.Timecards.SingleOrDefault(tc => tc.PayPeriod == payPeriod.Start); PunchResponse retVal = new PunchResponse() { isSuccess = true, pinError = "", generalError = null }; if (request.closesPunch == -1) // Create a new punch in the DB { Punch temp = new Punch() { EmployeeID = emp.EmployeeID, InTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, 0), OutTime = null, DepartmentID = emp.DepartmentID, PunchTypeID = Constants.DEFAULT_PUNCH_TYPE // Make this equal to the Regular punch type. }; db.Punches.Add(temp); db.SaveChanges(); var timeCardData = TimeCardView.LinesToTimeCardView(db.Lines.Where(l => l.TimecardID == curTimeCard.TimecardID).OrderBy(l => l.SplitStart)); // We add the last line to just display the information, letting the user know that we register the punch in timeCardData.Add(new TimeCardView() { DateText = DateTime.Now.ToString(@"MM\/dd\/yy"), InText = temp.InTime.ToString(@"hh\:mm"), OutText = "", RegularText = "", OvertimeText = "", DoubletimeText = "" }); retVal.lines = timeCardData; } else // We need to close the last punch and make lines -- Make it split the lines over the payperiod seed { // Set the ending time of the punch Punch currentPunch = db.Punches.First(p => p.PunchID == request.closesPunch); currentPunch.OutTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, 0); var timeCardData = db.Lines.Where(l => l.TimecardID == curTimeCard.TimecardID).OrderBy(l => l.SplitStart).ToList(); retVal.lines = TimeCardView.LinesToTimeCardView(timeCardData); if (currentPunch.OutTime.Value.Subtract(currentPunch.InTime).TotalMinutes < 1) // punch was shorter than a minut. { db.Punches.Remove(currentPunch); retVal.lines.Add(new TimeCardView() // Make the last line show, but mark is as rapid since it won't get put in the DB { DateText = currentPunch.InTime.ToString(@"MM\/dd\/yy"), InText = currentPunch.InTime.ToString(@"hh\:mm"), OutText = currentPunch.OutTime.Value.ToString(@"hh\:mm"), RegularText = "00:00", OvertimeText = "00:00", DoubletimeText = "00:00", isRapid = true }); } else // Punch was longer than a minut, we add it to the DB. { Calculations.addLines(db, currentPunch); } db.SaveChanges(); } return(new HttpResponseMessage <PunchResponse>(retVal)); } }
public HttpResponseMessage <PunchResponse> Punch(PunchRequest request) { using (var db = new TimeClockContext()) { /****************************************************************************** TODO ITEM *********************************/ //This is where we need to insert the new punch for the employee //If it is an out punch, we should recalculate their timecard lines. Employee emp = db.Employees.FirstOrDefault(e => e.EmployeeID.Equals(request.ID)); if (!emp.Pin.Equals(request.pin)) { PunchResponse response = new PunchResponse() { isSuccess = false, pinError = "Pin and user did not match.", lines = null, generalError = null }; return(new HttpResponseMessage <PunchResponse>(response)); } else { var payPeriod = PayPeriodTools.LookupPayPeriod(db, emp.DepartmentID); var curTimeCard = emp.Timecards.SingleOrDefault(tc => tc.PayPeriod == payPeriod.Start); PunchResponse retVal = new PunchResponse() { isSuccess = true, pinError = "", generalError = null }; if (request.closesPunch == -1) // Create a new punch in the DB { Punch temp = new Punch() { EmployeeID = emp.EmployeeID, InTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, 0), OutTime = null, DepartmentID = emp.DepartmentID, PunchTypeID = Constants.DEFAULT_PUNCH_TYPE // Make this equal to the Regular punch type. //OutTime = null; }; db.Punches.Add(temp); db.SaveChanges(); var timeCardData = new List <TimeCardView>(); timeCardData.Add(new TimeCardView() { DateText = DateTime.Now.ToString(@"MM\/dd\/yy"), InText = temp.InTime.ToString(@"hh\:mm"), OutText = "", RegularText = "", OvertimeText = "", DoubletimeText = "" }); retVal.lines = timeCardData; } else // We need to close the last punch and make lines -- Make it split the lines over the payperiod seed { // Set the ending time of the punch Punch currentPunch = db.Punches.First(p => p.PunchID == request.closesPunch); currentPunch.OutTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, 0); if (currentPunch.OutTime.Value.Subtract(currentPunch.InTime).TotalMinutes < 1) { db.Punches.Remove(currentPunch); } db.SaveChanges(); Calculations.addLines(db, currentPunch); var timeCardData = db.Lines.Where(l => l.TimecardID == curTimeCard.TimecardID).OrderBy(l => l.SplitStart).ToList(); retVal.lines = TimeCardView.LinesToTimeCardView(timeCardData); } /* * PunchResponse retVal = new PunchResponse() * { * isSuccess = true, * pinError = "", * lines = TimeCardView.LinesToTimeCardView(timeCardData), * generalError = null * }; */ return(new HttpResponseMessage <PunchResponse>(retVal)); } } }