public async Task <ApiResponse <bool> > BarberAttendanceBiometric(BarberAttendanceDTO request) { ApiResponse <bool> result = new ApiResponse <bool>(); try { var barberResult = await unitOfWork.BarbersManager.GetAsync(a => a.BarberFingerPrintId == request.BarberFingerprintId); Barber barber = barberResult.FirstOrDefault(); if (barber != null) { if (request.Method == 0) // Login Request . { var barberLoginResult = await unitOfWork.BarberLoginsManager.GetAsync(b => b.BarberId == barber.Id && b.LoginDateTime.Value.Date == request.CheckDate.Date); if (barberLoginResult.FirstOrDefault() == null) { BarberLogin newLogin = new BarberLogin(); newLogin.BarberId = barber.Id; newLogin.LoginDateTime = request.CheckDate; var res = await unitOfWork.BarberLoginsManager.CreateAsync(newLogin); await unitOfWork.SaveChangesAsync(); if (res != null) { result.Succeeded = true; result.Data = true; return(result); } else { result.Succeeded = false; result.Data = false; result.Errors.Add("Failed to sign in barber !"); return(result); } } else { result.Succeeded = false; result.Data = false; result.Errors.Add("Barber already signed in today !"); return(result); } } else // Logout Request . { var barberLoginResult = await unitOfWork.BarberLoginsManager.GetAsync(b => b.BarberId == barber.Id && b.LoginDateTime.Value.Date == request.CheckDate.Date); if (barberLoginResult.FirstOrDefault() == null) { result.Succeeded = false; result.Data = false; result.Errors.Add("Barber hasn't signed in today , Barber needs to sign in first in order to be able to sign out !"); return(result); } else { BarberLogin barberLoginToEdit = barberLoginResult.FirstOrDefault(); barberLoginToEdit.logoutDateTime = request.CheckDate; barber.Status = "Unavailable"; var res = await unitOfWork.BarberLoginsManager.UpdateAsync(barberLoginToEdit); await unitOfWork.SaveChangesAsync(); if (res == true) { result.Succeeded = true; result.Data = true; return(result); } else { result.Succeeded = false; result.Data = false; result.Errors.Add("Failed to sign out barber !"); return(result); } } } } else { result.Succeeded = false; result.Errors.Add("Failed to find specified barber !"); return(result); } } catch (Exception ex) { result.Succeeded = false; result.Errors.Add(ex.Message); return(result); } }
public async Task <ApiResponse <bool> > SignInBarberAdmin(BarberLoginRequestAdminDTO request) { ApiResponse <bool> result = new ApiResponse <bool>(); try { Barber barber = await unitOfWork.BarbersManager.GetByIdAsync(request.BarberId); if (barber != null) { var barberLoginResult = await unitOfWork.BarberLoginsManager.GetAsync(b => b.BarberId == request.BarberId && b.LoginDateTime.Value.Date == request.Time.Date); if (barberLoginResult.FirstOrDefault() == null) { var info = TimeZoneInfo.FindSystemTimeZoneById("Egypt Standard Time"); DateTimeOffset localServerTime = DateTimeOffset.Now; DateTimeOffset localTime = TimeZoneInfo.ConvertTime(localServerTime, info); request.Time = localTime.DateTime; BarberLogin newLogin = new BarberLogin(); newLogin.BarberId = barber.Id; newLogin.LoginDateTime = request.Time; var res = await unitOfWork.BarberLoginsManager.CreateAsync(newLogin); await unitOfWork.SaveChangesAsync(); if (res != null) { result.Succeeded = true; result.Data = true; return(result); } else { result.Succeeded = false; result.Data = false; result.Errors.Add("Failed to sign in barber !"); return(result); } } else { result.Succeeded = false; result.Data = false; result.Errors.Add("Barber already signed in today !"); return(result); } } else { result.Succeeded = false; result.Errors.Add("Failed to find specified barber !"); return(result); } } catch (Exception ex) { result.Succeeded = false; result.Errors.Add(ex.Message); return(result); } }
public async Task <ApiResponse <bool> > SignOutBarberAdmin(BarberLogoutRequestAdminDTO request) { ApiResponse <bool> result = new ApiResponse <bool>(); try { Barber barber = await unitOfWork.BarbersManager.GetByIdAsync(request.BarberId); if (barber != null) { var barberLoginResult = await unitOfWork.BarberLoginsManager.GetAsync(b => b.BarberId == request.BarberId && b.LoginDateTime.Value.Date == request.Time.Date); if (barberLoginResult.FirstOrDefault() == null) { result.Succeeded = false; result.Data = false; result.Errors.Add("Barber hasn't signed in today , Barber needs to sign in first in order to be able to sign out !"); return(result); } else { BarberLogin barberLoginToEdit = barberLoginResult.FirstOrDefault(); var info = TimeZoneInfo.FindSystemTimeZoneById("Egypt Standard Time"); DateTimeOffset localServerTime = DateTimeOffset.Now; DateTimeOffset localTime = TimeZoneInfo.ConvertTime(localServerTime, info); request.Time = localTime.DateTime; barberLoginToEdit.logoutDateTime = request.Time; barber.Status = "Unavailable"; var res = await unitOfWork.BarberLoginsManager.UpdateAsync(barberLoginToEdit); await unitOfWork.SaveChangesAsync(); if (res == true) { result.Succeeded = true; result.Data = true; return(result); } else { result.Succeeded = false; result.Data = false; result.Errors.Add("Failed to sign out barber !"); return(result); } } } else { result.Succeeded = false; result.Errors.Add("Failed to find specified barber !"); return(result); } } catch (Exception ex) { result.Succeeded = false; result.Errors.Add(ex.Message); return(result); } }
public async Task <ApiResponse <BarberDTO> > ChangeBarberStatus(CheckBarber checkBarber) { ApiResponse <BarberDTO> result = new ApiResponse <BarberDTO>(); try { Barber barberToEdit = await unitOfWork.BarbersManager.GetByIdAsync(checkBarber.Id); if (barberToEdit != null) { var info = TimeZoneInfo.FindSystemTimeZoneById("Egypt Standard Time"); DateTimeOffset localServerTime = DateTimeOffset.Now; DateTimeOffset localTime = TimeZoneInfo.ConvertTime(localServerTime, info); DateTime date = localTime.DateTime; var barberLoginsResult = await unitOfWork.BarberLoginsManager.GetAsync(result => result.BarberId == checkBarber.Id && result.LoginDateTime.Value.Date == checkBarber.Date.Value.Date); BarberLogin login = barberLoginsResult.FirstOrDefault(); if (login != null) { if (login.logoutDateTime == null) { if (barberToEdit.Status == "Available") { barberToEdit.Status = "Unavailable"; } else { barberToEdit.Status = "Available"; } var res = await unitOfWork.BarbersManager.UpdateAsync(barberToEdit); await unitOfWork.SaveChangesAsync(); if (res == true) { result.Succeeded = true; result.Data = mapper.Map <BarberDTO>(barberToEdit); return(result); } else { result.Succeeded = false; result.Errors.Add("Failed to update barber status !"); return(result); } } else { result.Succeeded = false; result.Errors.Add("A barber is already Sign Out !"); return(result); } } else { result.Succeeded = false; result.Errors.Add("barber is not logged in !"); return(result); } } else { result.Succeeded = false; result.Errors.Add("Failed to find specified barber !"); return(result); } } catch (Exception ex) { result.Succeeded = false; result.Errors.Add(ex.Message); return(result); } }