public IActionResult ClockIn() { var user = _userManager.FindByNameAsync(User.Identity.Name).GetAwaiter().GetResult(); var timeSheet = FindUserTimeSheet(user.Id); ClockIn clockIn = null; if (_context.ClockIns.Any(x => x.ClockOutTime == null && x.TimeSheetId == timeSheet.Id)) { clockIn = _context.ClockIns.Last(x => x.ClockOutTime == null && x.TimeSheetId == timeSheet.Id); } bool clockedIn = false; if (clockIn != null) { clockedIn = true; } var viewModel = new ClockInViewModel { UserName = user.FirstName + " " + user.LastName, OnClock = clockedIn, EmployeeId = user.Id }; return(View(viewModel)); }
public IActionResult ClockIn(bool In, ClockInViewModel model) { if (ModelState.IsValid) { if (model.OnClock && In) { ViewData["Info"] = "Currently Clocked In, clock out"; return(View(model)); } if (!model.OnClock && In) { var clockIn = new ClockIn { ClockInTime = DateTime.Now, TimeSheetId = model.TimeSheetId }; _context.ClockIns.Add(clockIn); _context.SaveChanges(); return(RedirectToAction("Index", new { In = true, Time = clockIn.ClockInTime })); } if (model.OnClock && !In) { var clockIn = _context.ClockIns.Last(x => x.TimeSheetId == model.TimeSheetId && x.ClockOutTime == null); clockIn.ClockOutTime = DateTime.Now; _context.ClockIns.Update(clockIn); _context.SaveChanges(); return(RedirectToAction("Index", new { In = false, Time = clockIn.ClockOutTime })); } } return(View(model)); }
public ClockInViewModel DeleteClockIn(string id) { var _unitOfWork = new UnitOfWork(); var query = _unitOfWork.AccountRepository.FirstOrDefault(x => x.gordon_id == id); if (query == null) { throw new ResourceNotFoundException() { ExceptionMessage = "The account was not found." }; } var idParam = new SqlParameter("@ID_Num", id); var result = RawSqlQuery <ClockInViewModel> .query("DELETE_CLOCK_IN @ID_NUM", idParam); //run stored procedure if (result == null) { throw new ResourceNotFoundException() { ExceptionMessage = "The data was not found." }; } ClockInViewModel y = new ClockInViewModel(); return(y); }
public ClockInViewModel ClockIn(bool state, string id) { var _unitOfWork = new UnitOfWork(); var query = _unitOfWork.AccountRepository.FirstOrDefault(x => x.gordon_id == id); if (query == null) { throw new ResourceNotFoundException() { ExceptionMessage = "The account was not found." }; } var idParam = new SqlParameter("@ID_Num", id); var stateParam = new SqlParameter("@CurrentState", state); var result = RawSqlQuery <ClockInViewModel> .query("INSERT_TIMESHEETS_CLOCK_IN_OUT @ID_Num, @CurrentState", idParam, stateParam); //run stored procedure if (result == null) { throw new ResourceNotFoundException() { ExceptionMessage = "The data was not found." }; } var currentState = state; ClockInViewModel y = new ClockInViewModel() { currentState = currentState }; return(y); }
public IActionResult ClockIn() { if (User.IsInRole("Administrator") || User.IsInRole("Payroll")) { return(RedirectToAction("Index", "Home")); } var user = _userManager.FindByNameAsync(User.Identity.Name).GetAwaiter().GetResult(); var timeSheet = FindTimeSheet(user.Id); ClockIn clockIn = null; if (_context.ClockIns.Any(x => x.TimeSheetId == timeSheet.Id)) { if (_context.ClockIns.Any(x => x.TimeSheetId == timeSheet.Id && x.ClockOutTime == null)) { clockIn = _context.ClockIns.Last(x => x.TimeSheetId == timeSheet.Id && x.ClockOutTime == null); } } bool clockedIn = clockIn != null; var viewModel = new ClockInViewModel { UserId = user.Id, UserName = user.FirstName + " " + user.LastName, TimeSheetId = timeSheet.Id, CurrentlyClockedIn = clockedIn }; ViewBag.Info = "Hello World"; return(View(viewModel)); }
public async void ClockOutTests() { var c = new ClockController(); var loginViewModel = new ClockInViewModel { token = "TdqvLaLw76Sky/m0KAC7Fjj4B9HVVBqDA1RoAhgoWyg=", }; var res = await c.ClockIn(loginViewModel); Xunit.Assert.True(res.success); var res2 = await c.ClockIn(loginViewModel); Xunit.Assert.False(res2.success); }
public IEnumerable <ClockInViewModel> ClockOut(string id) { var _unitOfWork = new UnitOfWork(); var query = _unitOfWork.AccountRepository.FirstOrDefault(x => x.gordon_id == id); if (query == null) { throw new ResourceNotFoundException() { ExceptionMessage = "The account was not found." }; } var idParam = new SqlParameter("@ID_Num", id); var result = RawSqlQuery <ClockInViewModel> .query("GET_TIMESHEETS_CLOCK_IN_OUT @ID_NUM", idParam); //run stored procedure if (result == null) { throw new ResourceNotFoundException() { ExceptionMessage = "The data was not found." }; } var clockOutModel = result.Select(x => { ClockInViewModel y = new ClockInViewModel(); y.currentState = x.currentState; y.timestamp = x.timestamp; return(y); }); return(clockOutModel); }
private void ValidateClocks(List <UserClockTypeViewModel> clocktypes , ClockInViewModel vm, WorkplacePersonnel workplacePersonnel, EngineContext db) { foreach (var clocktype in clocktypes) { switch (clocktype.type) { case ClockType.Wifi: if (vm.scanResults != null && vm.scanResults.Count == 0) { throw new Exception("هیچ دستگاه wifi ای شناسایی نشد"); } DetectWifiDevice(workplacePersonnel.Workplace, vm.scanResults); break; case ClockType.CameraSelfie: if (vm.bitmapdata != null && vm.bitmapdata.Length == 0) { throw new Exception("هیچ تصویری دریافت نگردید"); } break; case ClockType.GPS: if (vm.location == null) { throw new Exception("اطلاعات gps خالی است"); } IsInsideGPSArea(workplacePersonnel.Workplace, vm.location); break; case ClockType.QRCode: if (vm.qRCodeContent == null) { throw new Exception("اطلاعات QRCode خالی است"); } CompareQRCode(workplacePersonnel, vm.qRCodeContent); break; } } }
public async void ClockInTests() { var c = new ClockController(); InitWorkplaceAndPersonnel(); var loginViewModel = new ClockInViewModel { scanResults = new List <ScanResult> { new ScanResult { hessid = 61, wifiSsid = "anjir_1875", SSID = "ssvd", BSSID = "sscm5" }, }, qRCodeContent = "vlkwlkrnf;sjdsfd", location = new List <MyLocation> { new MyLocation { latitude = 51.1651, longitude = 35.651651, speed = 515156, } }, bitmapdata = new long[5], token = "TdqvLaLw76Sky/m0KAC7Fjj4B9HVVBqDA1RoAhgoWyg=", }; var res = await c.ClockIn(loginViewModel); Xunit.Assert.True(res.success); }
public ActionResult Clock(ClockInViewModel viewModel) { try { ViewBag.ClockInResult = false; var emp = db.Employees.SearchByCardNumberOrId(viewModel.Credentials); if (emp.Disabled) { ViewBag.ClockMessage = "This isn't an active employee."; return(View()); } var empId = emp.EmployeeId; var tc = new TimeClock(db); if (tc.ClockInOrOut(empId)) { ViewBag.ClockMessage = "Welcome, " + emp.FirstName + "! You have clocked in."; ViewBag.ClockInResult = true; } else { ViewBag.ClockMessage = "You have clocked out, " + emp.FirstName + ". Have a nice day!"; } } catch (NullReferenceException) { ViewBag.ClockMessage = "There's no one assigned to that number."; } catch (Exception) { ViewBag.ClockMessage = "Something happened! 8("; } return(View()); }
public IActionResult ClockBack(ClockInViewModel model) { using (_dbContext) { var response = ResponseModelFactory.CreateInstance; string today = DateTime.Now.ToString("yyyy-MM-dd"); //var worktime = _dbContext.WorkTime.FirstOrDefault(); //if (worktime == null) //{ // response.SetFailed("未获取到上下班时间,请通知管理员设置。"); // return Ok(response); //} var query = _dbContext.Attendance.FirstOrDefault(x => x.SystemUserUuid == model.UserUUID && x.ColckDate == today); if (query == null) { response.SetFailed("当前人员信息不存在,打卡失败。"); return(Ok(response)); } else { if (model.TimeState == "am") { if (string.IsNullOrEmpty(query.AmstartTime)) { response.SetFailed("未获取到上班打卡时间,请重新打卡。"); return(Ok(response)); } else { if (string.IsNullOrEmpty(query.AmendTime)) { if (!string.IsNullOrEmpty(model.AmendTime)) { query.AmendTime = model.AmendTime; query.AmendPlace = model.AmendPlace; query.EndState = 1; //if (Convert.ToDateTime(model.AmendTime) > Convert.ToDateTime(worktime.EndTime)) //{ // query.EndState = 1; //} //else //{ // query.EndState = 2; //} } else { response.SetFailed("未获取到下班打卡时间,请重新打卡。"); return(Ok(response)); } } else { response.SetFailed("下班已打卡,无需重复打卡。"); return(Ok(response)); } _dbContext.SaveChanges(); } } else { if (string.IsNullOrEmpty(query.PmstartTime)) { response.SetFailed("未获取到上班打卡时间,请重新打卡。"); return(Ok(response)); } else { if (string.IsNullOrEmpty(query.PmendTime)) { if (!string.IsNullOrEmpty(model.PmendTime)) { query.PmendTime = model.PmendTime; query.PmendPlace = model.PmendPlace; query.EndState = 1; //if (Convert.ToDateTime(model.PmendTime) > Convert.ToDateTime(worktime.EndTime)) //{ // query.EndState = 1; //} //else //{ // query.EndState = 2; //} } else { response.SetFailed("未获取到下班打卡时间,请重新打卡。"); return(Ok(response)); } } else { response.SetFailed("下班已打卡,无需重复打卡。"); return(Ok(response)); } _dbContext.SaveChanges(); } } } response.SetSuccess("打卡成功"); response.SetData(query); return(Ok(response)); } }
public IActionResult ClockIn(ClockInViewModel model) { using (_dbContext) { var response = ResponseModelFactory.CreateInstance; string today = DateTime.Now.ToString("yyyy-MM-dd"); //var worktime = _dbContext.WorkTime.FirstOrDefault(); //if (worktime == null) //{ // response.SetFailed("未获取到上下班时间,请通知管理员设置。"); // return Ok(response); //} var query = _dbContext.Attendance.FirstOrDefault(x => x.SystemUserUuid == model.UserUUID && x.ColckDate == today); if (query == null) { var entity = new Attendance(); entity.AttendanceUuid = Guid.NewGuid(); entity.SystemUserUuid = model.UserUUID; entity.ColckDate = today; entity.StartState = 0; entity.EndState = 0; entity.Type = model.Type; entity.Name = model.UserName; entity.GarbageRoomUuid = model.GarbageRoomUuid; //上午 if (DateTime.Now.Hour < 12) { if (!string.IsNullOrEmpty(model.AmstartTime)) { entity.AmstartTime = model.AmstartTime; entity.AmstartPlace = model.AmstartPlace; entity.StartState = 1; //if (Convert.ToDateTime(model.AmstartTime) < Convert.ToDateTime(worktime.StartTime)) //{ // entity.StartState = 1; //} //else //{ // entity.StartState = 2; //} } else { response.SetFailed("未获取到上班打卡时间,请重新打卡。"); return(Ok(response)); } } //下午 else { if (!string.IsNullOrEmpty(model.PmstartTime)) { entity.PmstartTime = model.PmstartTime; entity.PmstartPlace = model.PmstartPlace; entity.StartState = 1; //if (Convert.ToDateTime(model.PmstartTime) < Convert.ToDateTime(worktime.StartTime)) //{ // entity.StartState = 1; //} //else //{ // entity.StartState = 2; //} } else { response.SetFailed("未获取到上班打卡时间,请重新打卡。"); return(Ok(response)); } } _dbContext.Attendance.Add(entity); _dbContext.SaveChanges(); } else { //上午 if (DateTime.Now.Hour < 12) { if (string.IsNullOrEmpty(query.AmstartTime)) { if (!string.IsNullOrEmpty(model.AmstartTime)) { query.StartState = 1; //if (Convert.ToDateTime(model.AmstartTime) < Convert.ToDateTime(worktime.StartTime)) //{ // query.StartState = 1; //} //else //{ // query.StartState = 2; //} query.AmstartTime = model.AmstartTime; query.AmstartPlace = model.AmstartPlace; } else { response.SetFailed("未获取到上班打卡时间,请重新打卡。"); return(Ok(response)); } } else { response.SetFailed("上班已打卡,无需重复打卡。"); return(Ok(response)); } } //下午 else { if (string.IsNullOrEmpty(query.PmstartTime)) { if (!string.IsNullOrEmpty(model.PmstartTime)) { query.StartState = 1; //if (Convert.ToDateTime(model.PmstartTime) < Convert.ToDateTime(worktime.StartTime)) //{ // query.StartState = 1; //} //else //{ // query.StartState = 2; //} query.PmstartTime = model.PmstartTime; query.PmstartPlace = model.PmstartPlace; } else { response.SetFailed("未获取到上班打卡时间,请重新打卡。"); return(Ok(response)); } } else { response.SetFailed("上班已打卡,无需重复打卡。"); return(Ok(response)); } } _dbContext.SaveChanges(); } response.SetSuccess("打卡成功"); response.SetData(query); return(Ok(response)); } }
public async Task <ClockInViewModelResult> ClockIn(ClockInViewModel vm) { try { using (var db = new EngineContext()) { string username = SecurityService.GetUsernameFromToken(vm.token); //یافتن پرسنل var workplacePersonnel = db.WorkplacePersonnels.FirstOrDefault(p => p.Username == username); if (workplacePersonnel == null) { throw new Exception("کاربر یافت نشد"); } // کلاک ورود // آیا قبلا وارد شده است var biometricDate = db.BiometricDatas.FirstOrDefault(b => b.WorkplacePersonnelId == workplacePersonnel.Id && b.Date.Year == DateTime.Now.Year && b.Date.Month == DateTime.Now.Month && b.Date.Day == DateTime.Now.Day ); if (biometricDate == null) { biometricDate = db.BiometricDatas.Create(); } var lastBiometricDateTime = biometricDate.BiometricDataTimes.OrderBy(d => d.InsertDateTime).LastOrDefault(); string clocktypestr = "وارد"; if (lastBiometricDateTime == null || (lastBiometricDateTime.TimeIn.HasValue && lastBiometricDateTime.TimeOut.HasValue)) { var clocktypes = workplacePersonnel.Workplace.UserClockTypes; // ولیدیشن نوع کلاک ها ValidateClocks(clocktypes, vm, workplacePersonnel, db); // هیچ کلاکی نزده است lastBiometricDateTime = db.BiometricDataTimes.Create(); lastBiometricDateTime.TimeIn = DateTime.Now; lastBiometricDateTime.ClockInViewModels.Add(vm); //ذخیره biometricDate.BiometricDataTimes.Add(lastBiometricDateTime); workplacePersonnel.BiometricDatas.Add(biometricDate); db.Entry(workplacePersonnel).State = EntityState.Modified; await db.SaveChangesAsync(); } else { // throw new Exception("شما قبلا ساعت ورود زده اید"); if (lastBiometricDateTime.TimeOut.HasValue) { throw new Exception("شما قبلا ساعت خروج زده اید"); } // هیچ کلاکی نزده است lastBiometricDateTime.TimeOut = DateTime.Now; //ذخیره db.Entry(lastBiometricDateTime).State = EntityState.Modified; clocktypestr = "خارج"; await db.SaveChangesAsync(); } var hour = EngineUtility.ConvertTimeSpanToStr(lastBiometricDateTime.TimeIn.Value.TimeOfDay); return(await Task.FromResult(new ClockInViewModelResult { success = true, message = $@" {clocktypestr } در {hour} " })); } } catch (Exception e) { return(await Task.FromResult(new ClockInViewModelResult { success = false, message = e.Message })); throw; } }