public async Task <IActionResult> Get() { try { string selectUsersFromDb_string = $@"SELECT [id], [firstName], [lastName], [userName], [role] FROM [User]"; var selectUsersFromDb_result = await _db.SelectAsync <UserAccountModel, dynamic>(selectUsersFromDb_string, new UserAccountModel { }); if (selectUsersFromDb_result.Count < 1) { IActionResult actionResult = customActionResult.NotFound("No users found in database."); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } else { IActionResult actionResult = customActionResult.Ok("Users found in database.", selectUsersFromDb_result); return(StatusCode(StatusCodes.Status200OK, actionResult)); } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> Get() { try { DynamicParameters selectWorkdaysByUserId_params = new DynamicParameters(); selectWorkdaysByUserId_params.Add("@userId", _claims.GetUserId()); string selectWorkdaysByUserId_string = $@" SELECT [id], [date], [startDate], [endDate], [typeCode], [aom], [userId] FROM [Workday] WHERE [userId] = @userId AND [endDate] IS NOT NULL "; var selectWorkdaysByUserId_result = await _db.SelectAsync <WorkdayModel, dynamic>( selectWorkdaysByUserId_string, selectWorkdaysByUserId_params ); if (selectWorkdaysByUserId_result.Count < 1) { IActionResult actionResult = customActionResult.NotFound($"No workdays found in database for this username."); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } else { List <WorkdayModel> UserWorkdays = new List <WorkdayModel>(); foreach (var workday in selectWorkdaysByUserId_result) { DynamicParameters selectTSignatureByWorkdayId_params = new DynamicParameters(); selectTSignatureByWorkdayId_params.Add("@workdayId", workday.id); string selectTSignatureByWorkdayId_string = $@" SELECT TOP 1 [typeCode] FROM [TimeSignature] WHERE [workdayId] = @workdayId "; var selectTSignatureByWorkdayId_result = await _db.SelectAsync <TimeSignatureModel, dynamic>( selectTSignatureByWorkdayId_string, selectTSignatureByWorkdayId_params ); UserWorkdays.Add(new WorkdayModel { id = workday.id, date = workday.date, startDate = workday.startDate, endDate = workday.endDate, signatureType = selectTSignatureByWorkdayId_result[0].typeCode, aom = workday.aom, typeCode = workday.typeCode, userId = workday.userId }); } IActionResult actionResult = customActionResult.Ok($"Following workdays were found in database for this username.", UserWorkdays); return(StatusCode(StatusCodes.Status200OK, actionResult)); } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> WorkdayType() { try { string workdayTypeFixString = @$ "SELECT [id], [code], [name] FROM [WorkdayType]"; var workdayTypeDBResults = await _db.SelectAsync <GetWorkdayTypeModel, dynamic>( workdayTypeFixString, new GetWorkdayTypeModel { } ); if (workdayTypeDBResults.Count < 1) { IActionResult actionResult = customActionResult.NotFound(@$ "No 'Workday Type' elements found in database."); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } else { IActionResult actionResult = customActionResult.Ok(@$ "Workday types found.", workdayTypeDBResults); return(StatusCode(StatusCodes.Status200OK, actionResult)); } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> VerifyState() { try { var checkIfAnyFinishedTSignatureSavedInDbWithCurrentDate = await CheckIfAnyFinishedTSignatureSavedInDbWithCurrentDate(); if ( checkIfAnyFinishedTSignatureSavedInDbWithCurrentDate.Count > 0 && checkIfAnyFinishedTSignatureSavedInDbWithCurrentDate[0].typeCode == "FLX" && checkIfAnyFinishedTSignatureSavedInDbWithCurrentDate[0].stateCode == "TT" && checkIfAnyFinishedTSignatureSavedInDbWithCurrentDate[0].endDate.Date == DateTime.Now.Date ) { IActionResult actionResult = customActionResult.Locked( @$ "You already finished your workday for today using flexible time signatures. If you checked in the finish checkbox from the client by mistake, contact your manager. Have a nice day and see you tommorrow", _state = "TT" ); return(StatusCode(StatusCodes.Status423Locked, actionResult)); } else { var checkIfAnyStartedTSignatureSavedInDbWithCurrentDate = await CheckIfAnyStartedTSignatureSavedInDbWithCurrentDate(); if ( checkIfAnyStartedTSignatureSavedInDbWithCurrentDate.Count > 0 && checkIfAnyStartedTSignatureSavedInDbWithCurrentDate[0].stateCode == "IP" ) { IActionResult actionResult = customActionResult.Locked( @$ "You already clocked in. You must clock out before you clock in again. Your session already started at {checkIfAnyStartedTSignatureSavedInDbWithCurrentDate[0].startDate}", _state = "IP" ); return(StatusCode(StatusCodes.Status423Locked, actionResult)); } else { IActionResult actionResult = customActionResult.Ok( @$ "You are free to clock in.", _state = "OK" ); return(StatusCode(StatusCodes.Status200OK, actionResult)); } } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> Delete(int id) { try { DynamicParameters selectUserById_params = new DynamicParameters(); selectUserById_params.Add("@userId", id); string selectUserById_string = $@"SELECT [userName] FROM [User] WHERE [id] = @userId"; var selectUserById_result = await _db.SelectAsync <UserAccountModel, dynamic>(selectUserById_string, selectUserById_params); if (selectUserById_result.Count < 1) { IActionResult actionResult = customActionResult.NotFound("No user found by given id"); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } else { DynamicParameters deleteUserById_params = new DynamicParameters(); deleteUserById_params.Add("@userId", id); string deleteUserById_string = $@"DELETE FROM [User] WHERE [id] = @userId"; await _db.DeleteAsync(deleteUserById_string, deleteUserById_params); IActionResult actionResult = customActionResult.Ok( "You successfuly deleted user account." ); return(StatusCode(StatusCodes.Status200OK, actionResult)); } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> Get(int id) { try { DynamicParameters selectUsersWorkdaysByUserId_params = new DynamicParameters(); selectUsersWorkdaysByUserId_params.Add("@userId", id); string selectUsersWorkdaysByUserId_string = $@" SELECT [id], [date], [startDate], [endDate], [aom], [typeCode] FROM [Workday] WHERE [userId] = @userId AND [endDate] IS NOT NULL "; var selectUsersWorkdaysByUserId_result = await _db.SelectAsync <WorkdayModel, dynamic>( selectUsersWorkdaysByUserId_string, selectUsersWorkdaysByUserId_params ); if (selectUsersWorkdaysByUserId_result.Count < 1) { IActionResult actionResult = customActionResult.NotFound(@$ "No workdays found for user id '{id}' in database."); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } else { IActionResult actionResult = customActionResult.Ok("User workdays were found in database.", selectUsersWorkdaysByUserId_result); return(StatusCode(StatusCodes.Status200OK, actionResult)); } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> ClockIn(TimeSignatureModel body) { try { if (body == null) { IActionResult actionResult = customActionResult.BadRequest("The client set the requested body to null before it was sent."); return(StatusCode(StatusCodes.Status400BadRequest, actionResult)); } else if (string.IsNullOrEmpty(body.typeCode) || string.IsNullOrWhiteSpace(body.typeCode)) { IActionResult actionResult = customActionResult.FieldsRequired( "The 'type code' field has been sent from the client null, empty, or whitespaced." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (body.typeCode != "FLX") { IActionResult actionResult = customActionResult.Conflict( "This option is only for 'Fixed Time Signature'. For 'Flexible Time Signature', try the other option." ); return(StatusCode(StatusCodes.Status409Conflict, actionResult)); } else if (string.IsNullOrEmpty(body.wd_typeCode) || string.IsNullOrWhiteSpace(body.wd_typeCode)) { IActionResult actionResult = customActionResult.FieldsRequired( "The Workday 'code type' field has been sent from the client null, empty, or whitespaced." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else { var checkIfAnyWorkdaySavedInDbWithCurrentDate = await CheckIfAnyWorkdaySavedInDbWithCurrentDate(); if ( checkIfAnyWorkdaySavedInDbWithCurrentDate.Count > 0 && checkIfAnyWorkdaySavedInDbWithCurrentDate[0].typeCode == "FLX" && checkIfAnyWorkdaySavedInDbWithCurrentDate[0].stateCode == "TT" && checkIfAnyWorkdaySavedInDbWithCurrentDate[0].endDate.Date == DateTime.Now.Date ) { IActionResult actionResult = customActionResult.Locked( @$ "You already finished your workday for today using flexible time signatures. If you checked in the finish checkbox from the client by mistake, contact your manager. Have a nice day and see you tommorrow" ); return(StatusCode(StatusCodes.Status423Locked, actionResult)); } else { var checkIfAnyTSignatureSavedInDbWithCurrentDate = await CheckIfAnyTSignatureSavedInDbWithCurrentDate(); if (checkIfAnyTSignatureSavedInDbWithCurrentDate.Count > 0) { IActionResult actionResult = customActionResult.Locked( @$ "You already clocked in. You must clock out before you clock in again. Your session already started at {checkIfAnyTSignatureSavedInDbWithCurrentDate[0].startDate}" ); return(StatusCode(StatusCodes.Status423Locked, actionResult)); } else { if (body.wd_typeCode != "ZI") { IActionResult actionResult = customActionResult.BadRequest( @$ "The workday 'code type' value provided by the client is not valid: {body.wd_typeCode}." ); return(StatusCode(StatusCodes.Status400BadRequest, actionResult)); } else { var selectWorkdayById = await SelectWorkdayById(); if (selectWorkdayById.Count < 1) { await InsertIntoWorkday(body); } var selectWorkdayByIdAgain = await SelectWorkdayById(); await ClockIn(body, selectWorkdayByIdAgain); DateTime dateNow = new DateTime(); dateNow = DateTime.Now; IActionResult actionResult = customActionResult.Ok( @$ "You signed successfuly for flexible 'Time Signature' at {dateNow}. Don't forget to clock out." ); return(StatusCode(StatusCodes.Status200OK, actionResult)); } } } } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> ChangePassword(UserAccountModel body) { try { if (body == null) { IActionResult actionResult = BadRequest( "The client set the requested body to null before it was sent." ); return(StatusCode(StatusCodes.Status400BadRequest, actionResult)); } else if (string.IsNullOrEmpty(body.password) || string.IsNullOrWhiteSpace(body.password)) { IActionResult actionResult = customActionResult.FieldsRequired( "The 'password' field has been sent from the client null, empty, or whitespaced." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (string.IsNullOrEmpty(body.oldPassword) || string.IsNullOrWhiteSpace(body.oldPassword)) { IActionResult actionResult = customActionResult.FieldsRequired( "The 'old password' field has been sent from the client null, empty, or whitespaced." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else { DynamicParameters selectPasswordByUserId_params = new DynamicParameters(); selectPasswordByUserId_params.Add("@userId", _claims.GetUserId()); string selectPasswordByUserId_string = $"SELECT [password] FROM [User] WHERE [id] = @userId"; var selectPasswordByUserId_results = await _db.SelectAsync <UserAccountModel, dynamic>(selectPasswordByUserId_string, selectPasswordByUserId_params); if (selectPasswordByUserId_results.Count < 1) { IActionResult actionResult = customActionResult.NotFound( "The user details provided do not exist in the database, try again." ); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } else { _user.oldPassword = selectPasswordByUserId_results[0].password; bool comparePassword = new HashPassword().VerifyPassword(_user.oldPassword, body.oldPassword); byte[] salt = hashPassword.CreateSalt(10); string newPasswordHashed = hashPassword.GenerateSHA256Hash(body.password, salt, false); if (comparePassword != true) { IActionResult actionResult = customActionResult.Unauthorized( "The old password is wrong, so the access is denied." ); return(StatusCode(StatusCodes.Status401Unauthorized, actionResult)); } else if (string.IsNullOrEmpty(newPasswordHashed) || string.IsNullOrWhiteSpace(newPasswordHashed)) { IActionResult actionResult = customActionResult.Locked( "The new password failed to hash, so the process to change the password has been blocked. Please Try Again." ); return(StatusCode(StatusCodes.Status423Locked, actionResult)); } else { DynamicParameters updatePassword_params = new DynamicParameters(); updatePassword_params.Add("@userId", _claims.GetUserId()); updatePassword_params.Add("@newPassword", newPasswordHashed); string updatePassword_string = @"UPDATE [User] SET [password] = @newPassword WHERE [id] = @userId"; await _db.UpdateAsync(updatePassword_string, updatePassword_params); IActionResult actionResult = customActionResult.Ok( "Password changed successfully. Be careful and don't give it to anyone." ); return(StatusCode(StatusCodes.Status202Accepted, actionResult)); } } } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> UpdateSelfsWorkdayAndTSignatureByWorkdayId(int id, TimeSignatureModel body) { try { if (body == null) { IActionResult actionResult = customActionResult.BadRequest( "The client set the requested body to null before it was sent." ); return(StatusCode(StatusCodes.Status400BadRequest, actionResult)); } else { if (body.startDate == null || body.endDate == null) { IActionResult actionResult = customActionResult.FieldsRequired( "The 'start date' or 'end date' field has been sent from the client null, empty, or whitespaced." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else { DynamicParameters selectTSignaturesIdentifiersByWorkdayIdAndUserId_params = new DynamicParameters(); selectTSignaturesIdentifiersByWorkdayIdAndUserId_params.Add("@workdayId", id); selectTSignaturesIdentifiersByWorkdayIdAndUserId_params.Add("@userId", _claims.GetUserId()); string selectTSignaturesIdentifiersByWorkdayIdAndUserId_string = $@" SELECT [typeCode], [updateBy] FROM [TimeSignature] WHERE [workdayId] = @workdayId AND [userId] = @userId "; var selectTSignaturesIdentifiersByWorkdayIdAndUserId = await _db.SelectAsync <TimeSignatureModel, dynamic>( selectTSignaturesIdentifiersByWorkdayIdAndUserId_string, selectTSignaturesIdentifiersByWorkdayIdAndUserId_params ); if ( selectTSignaturesIdentifiersByWorkdayIdAndUserId.Count > 0 && selectTSignaturesIdentifiersByWorkdayIdAndUserId[0].typeCode == "FIX" && ( selectTSignaturesIdentifiersByWorkdayIdAndUserId[0].updateBy == null || selectTSignaturesIdentifiersByWorkdayIdAndUserId[0].updateBy == "self" ) ) { DynamicParameters updateTSignature_params = new DynamicParameters(); updateTSignature_params.Add("@userId", _claims.GetUserId()); updateTSignature_params.Add("@userName", _claims.GetUserName()); updateTSignature_params.Add("@id", id); updateTSignature_params.Add("@startDate", body.startDate); updateTSignature_params.Add("@endDate", body.endDate); updateTSignature_params.Add("@wd_typeCode", body.wd_typeCode); string updateTSignature_string = $@" UPDATE [TimeSignature] SET [startDate] = @startDate, [endDate] = @endDate, [aom] = (SELECT DATEDIFF(MINUTE, @startDate, @endDate)), [wd_typeCode] = @wd_typeCode, [lastUpdate] = GETDATE(), [updateBy] = 'self' WHERE [userId] = @userId AND [workdayId] = @id "; await _db.UpdateAsync(updateTSignature_string, updateTSignature_params); string updateWorkday_string = $@" UPDATE [Workday] SET [startDate] = @startDate, [endDate] = @endDate, [aom] = (SELECT DATEDIFF(MINUTE, @startDate, @endDate)), [typeCode] = @wd_typeCode WHERE [userId] = @userId AND [id] = @id "; await _db.UpdateAsync(updateWorkday_string, updateTSignature_params); IActionResult actionResult = customActionResult.Ok(@$ "Your time signature was successfully updated."); return(StatusCode(StatusCodes.Status200OK, actionResult)); } else if ( selectTSignaturesIdentifiersByWorkdayIdAndUserId.Count > 0 && selectTSignaturesIdentifiersByWorkdayIdAndUserId[0].typeCode == "FIX" && ( selectTSignaturesIdentifiersByWorkdayIdAndUserId[0].updateBy != null || selectTSignaturesIdentifiersByWorkdayIdAndUserId[0].updateBy != "self" ) ) { IActionResult actionResult = customActionResult.Unauthorized( "You are not authorzied to make any updates on workdays having time signatures that were updated by an admin user." ); return(StatusCode(StatusCodes.Status401Unauthorized, actionResult)); } else if ( selectTSignaturesIdentifiersByWorkdayIdAndUserId.Count > 0 && selectTSignaturesIdentifiersByWorkdayIdAndUserId[0].typeCode == "FLX" && _claims.GetUserRole() == "admin" ) { DynamicParameters deleteFlxTSignaturesByWorkdayId_params = new DynamicParameters(); deleteFlxTSignaturesByWorkdayId_params.Add("@id", id); string deleteFlxTSignaturesByWorkdayId = $@" DELETE FROM [TimeSignature] WHERE [WorkdayId] = @id "; await _db.DeleteAsync(deleteFlxTSignaturesByWorkdayId, deleteFlxTSignaturesByWorkdayId_params); DynamicParameters insertIntoTSignature_params = new DynamicParameters(); insertIntoTSignature_params.Add("@userId", _claims.GetUserId()); insertIntoTSignature_params.Add("@workdayId", id); insertIntoTSignature_params.Add("@wd_typeCode", body.wd_typeCode); insertIntoTSignature_params.Add("@startDate", body.startDate); insertIntoTSignature_params.Add("@endDate", body.endDate); string insertIntoTSignature_string = $@" INSERT INTO [TimeSignature] ( [startDate], [endDate], [typeCode], [stateCode], [wd_typeCode], [workdayId], [userId], [aom], [lastUpdate], [updateBy] ) VALUES ( @startDate, @endDate, (SELECT [code] FROM [SignatureType] WHERE [code] = 'FIX'), (SELECT [code] FROM [SignatureState] WHERE [code] = 'TT'), (SELECT [code] FROM [WorkdayType] WHERE [code] = @wd_typeCode), (SELECT [id] FROM [Workday] WHERE [id] = @workdayId), (SELECT [id] FROM [User] WHERE [id] = @userId), (SELECT DATEDIFF(MINUTE, @startDate, @endDate)), (SELECT GETDATE()), 'self' ) "; await _db.InsertAsync(insertIntoTSignature_string, insertIntoTSignature_params); DynamicParameters updateWorkdayById_params = new DynamicParameters(); updateWorkdayById_params.Add("@userId", _claims.GetUserId()); updateWorkdayById_params.Add("@workdayId", id); updateWorkdayById_params.Add("@startDate", body.startDate); updateWorkdayById_params.Add("@endDate", body.endDate); string updateWorkdayById_string = $@" UPDATE [Workday] SET [date] = (SELECT [startDate] FROM [TimeSignature] WHERE [workdayId] = @workdayId), [startDate] = (SELECT [startDate] FROM [TimeSignature] WHERE [workdayId] = @workdayId), [endDate] = (SELECT [endDate] FROM [TimeSignature] WHERE [workdayId] = @workdayId), [aom] = (SELECT DATEDIFF(MINUTE, @startDate, @endDate)) WHERE [userId] = @userId AND [id] = @workdayId "; await _db.UpdateAsync(updateWorkdayById_string, updateWorkdayById_params); IActionResult actionResult = customActionResult.Ok(@$ "Your time signature was successfully updated."); return(StatusCode(StatusCodes.Status200OK, actionResult)); } else if ( selectTSignaturesIdentifiersByWorkdayIdAndUserId.Count > 0 && selectTSignaturesIdentifiersByWorkdayIdAndUserId[0].typeCode == "FLX" && _claims.GetUserRole() != "admin" ) { IActionResult actionResult = customActionResult.Unauthorized( "You are not authorized to update your workdays with flexible time signature, if by mystake you made a databes record using flexible time signature, please contact your manager." ); return(StatusCode(StatusCodes.Status401Unauthorized, actionResult)); } else { IActionResult actionResult = customActionResult.NotFound( @$ "No time signatures found searching by workday id and user id." ); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } } } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> DeleteAsOrdinaryAsync(int id, TimeSignatureModel body) { try { if (body == null) { IActionResult actionResult = customActionResult.BadRequest( "The client set the requested body to null before it was sent." ); return(StatusCode(StatusCodes.Status400BadRequest, actionResult)); } else { if (string.IsNullOrEmpty(body.typeCode) || string.IsNullOrWhiteSpace(body.typeCode)) { IActionResult actionResult = customActionResult.FieldsRequired( "The 'code type' field has been sent from the client null, empty, or whitespaced." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (body.typeCode != "FIX" && _claims.GetUserRole() != "admin") { IActionResult actionResult = customActionResult.Conflict( "This option is only for 'Fixed Time Signature' type. If you want to delete a 'Flexible Time Signature', please contact your manager." ); return(StatusCode(StatusCodes.Status409Conflict, actionResult)); } else if (body.typeCode == "FIX" && _claims.GetUserRole() != "admin") { DynamicParameters selectUserIdByWokrdayId_params = new DynamicParameters(); selectUserIdByWokrdayId_params.Add("@userId", _claims.GetUserId()); selectUserIdByWokrdayId_params.Add("@workdayId", id); string selectUserIdByWokrdayId_string = $@" SELECT [userId] FROM [Workday] WHERE [userId] = @userId AND [id] = @workdayId "; var selectUserIdByWorkdayId_result = await _db.SelectAsync <WorkdayModel, dynamic>(selectUserIdByWokrdayId_string, selectUserIdByWokrdayId_params); if (selectUserIdByWorkdayId_result.Count < 1) { IActionResult actionResult = customActionResult.NotFound("No time signature found by given id"); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } else if (selectUserIdByWorkdayId_result[0].userId != _claims.GetUserId()) { IActionResult actionResult = customActionResult.Unauthorized( "You are not authorized to delete this time signature." ); return(StatusCode(StatusCodes.Status401Unauthorized, actionResult)); } else { DynamicParameters deleteFixTSignatureByWorkdayId_params = new DynamicParameters(); deleteFixTSignatureByWorkdayId_params.Add("@workdayId", id); string deleteFixTSignaturesByWorkdayId = $@" DELETE FROM [TimeSignature] WHERE [workdayId] = @workdayId AND [typeCode] = 'FIX' "; await _db.DeleteAsync(deleteFixTSignaturesByWorkdayId, deleteFixTSignatureByWorkdayId_params); string deleteFixWorkdayByWorkdayId = $@" DELETE FROM [Workday] WHERE [id] = @workdayId "; await _db.DeleteAsync(deleteFixWorkdayByWorkdayId, deleteFixTSignatureByWorkdayId_params); IActionResult actionResult = customActionResult.Ok( "You deleted successfuly your workday." ); return(StatusCode(StatusCodes.Status200OK, actionResult)); } } else { DynamicParameters selectUserIdByWokrdayId_params = new DynamicParameters(); selectUserIdByWokrdayId_params.Add("@userId", _claims.GetUserId()); selectUserIdByWokrdayId_params.Add("@workdayId", id); string selectUserIdByWokrdayId_string = $@" SELECT [userId] FROM [Workday] WHERE [userId] = @userId AND [id] = @workdayId "; var selectUserIdByWorkdayId_result = await _db.SelectAsync <WorkdayModel, dynamic>(selectUserIdByWokrdayId_string, selectUserIdByWokrdayId_params); if (selectUserIdByWorkdayId_result.Count < 1) { IActionResult actionResult = customActionResult.NotFound("No time signature found by given id"); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } else if (selectUserIdByWorkdayId_result[0].userId != _claims.GetUserId()) { IActionResult actionResult = customActionResult.Unauthorized( "You are not authorized to delete this time signature." ); return(StatusCode(StatusCodes.Status401Unauthorized, actionResult)); } else { DynamicParameters deleteFixTSignatureByWorkdayId_params = new DynamicParameters(); deleteFixTSignatureByWorkdayId_params.Add("@workdayId", id); string deleteFixTSignaturesByWorkdayId = $@" DELETE FROM [TimeSignature] WHERE [workdayId] = @workdayId "; await _db.DeleteAsync(deleteFixTSignaturesByWorkdayId, deleteFixTSignatureByWorkdayId_params); string deleteFixWorkdayByWorkdayId = $@" DELETE FROM [Workday] WHERE [id] = @workdayId "; await _db.DeleteAsync(deleteFixWorkdayByWorkdayId, deleteFixTSignatureByWorkdayId_params); IActionResult actionResult = customActionResult.Ok( "You deleted successfuly your workday." ); return(StatusCode(StatusCodes.Status200OK, actionResult)); } } } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <IActionResult> ClockInAsOrdinary(TimeSignatureModel body) { try { //#region CHECK INPUTS SENT FROM CLIENT if (body == null) { IActionResult actionResult = customActionResult.BadRequest( "The client set the requested body to null before it was sent." ); return(StatusCode(StatusCodes.Status400BadRequest, actionResult)); } else { if (string.IsNullOrEmpty(body.typeCode) || string.IsNullOrWhiteSpace(body.typeCode)) { IActionResult actionResult = customActionResult.FieldsRequired( "The 'code type' field has been sent from the client null, empty, or whitespaced." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (body.typeCode != "FIX") { IActionResult actionResult = customActionResult.Conflict( "This option is only for 'Fixed Time Signature'. For 'Flexible Time Signature', try the other option." ); return(StatusCode(StatusCodes.Status409Conflict, actionResult)); } else { var selectTodaysUserTSignatureIdentifiersByUserId = await SelectTodaysUserTSignatureIdentifiersByUserId(body); if (selectTodaysUserTSignatureIdentifiersByUserId.Count < 1) { if (string.IsNullOrEmpty(body.wd_typeCode) || string.IsNullOrWhiteSpace(body.wd_typeCode)) { IActionResult actionResult = customActionResult.FieldsRequired( "The workday 'code type' field has been sent from the client null, empty, or whitespaced." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (body.fullDay == false && (body.startDate == null || body.endDate == null)) { IActionResult actionResult = customActionResult.FieldsRequired( "The 'start date' or 'end date' field has been sent from the client null." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (body.fullDay == false && (body.startDate != null || body.endDate != null)) { await InsertIntoWorkdayWithOutFullDayOption(body); IActionResult actionResult = customActionResult.Ok(@$ "You signed successfuly without full day option."); return(StatusCode(StatusCodes.Status200OK, actionResult)); } else if (body.fullDay == true && body.startDate == null) { IActionResult actionResult = customActionResult.FieldsRequired("The 'start date' field has been sent from the client null."); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (body.fullDay == true && body.startDate != null) { await InsertIntoWorkdayWithFullDayOption(body); IActionResult actionResult = customActionResult.Ok(@$ "You signed successfuly with full day option."); return(StatusCode(StatusCodes.Status200OK, actionResult)); } else { IActionResult actionResult = customActionResult.NotFound(@$ "No options found with given keys."); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } } else { var checkDbIfUserClockedInTodayFixTSignature = await CheckDbIfUserClockedInTodayWithFixTSignature(selectTodaysUserTSignatureIdentifiersByUserId); if ( checkDbIfUserClockedInTodayFixTSignature.Count > 0 && selectTodaysUserTSignatureIdentifiersByUserId[0].stateCode == "TT" && selectTodaysUserTSignatureIdentifiersByUserId[0].typeCode == "FIX" ) { if (string.IsNullOrEmpty(body.wd_typeCode) || string.IsNullOrWhiteSpace(body.wd_typeCode)) { IActionResult actionResult = customActionResult.FieldsRequired( "The workday 'code type' field has been sent from the client null, empty, or whitespaced." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (body.fullDay == false && (body.startDate == null || body.endDate == null)) { IActionResult actionResult = customActionResult.FieldsRequired( "The 'start date' or 'end date' field has been sent from the client null." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (body.fullDay == false && (body.startDate != null || body.endDate != null)) { await InsertIntoWorkdayWithOutFullDayOption(body); IActionResult actionResult = customActionResult.Ok("You signed successfuly without full day option."); return(StatusCode(StatusCodes.Status200OK, actionResult)); } else if (body.fullDay == true && body.startDate == null) { IActionResult actionResult = customActionResult.FieldsRequired( "The 'start date' field has been sent from the client null." ); return(StatusCode(StatusCodes.Status411LengthRequired, actionResult)); } else if (body.fullDay == true && body.startDate != null) { await InsertIntoWorkdayWithFullDayOption(body); IActionResult actionResult = customActionResult.Ok("You signed successfuly with full day option."); return(StatusCode(StatusCodes.Status200OK, actionResult)); } else { IActionResult actionResult = customActionResult.NotFound("No options found with given keys."); return(StatusCode(StatusCodes.Status404NotFound, actionResult)); } } else { IActionResult actionResult = customActionResult.Locked(@$ " You already clocked in for today with workday type code 'ZI'. If you want to, you have the option to update your time signature. Your session started at {selectTodaysUserTSignatureIdentifiersByUserId[0].startDate} and ended at {selectTodaysUserTSignatureIdentifiersByUserId[0].endDate} "); return(StatusCode(StatusCodes.Status423Locked, actionResult)); } } } } } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }