public async Task <IActionResult> Handle(HttpRequest request, EnterSsRequest data) { AuthByKeyResult authResult = this.GetAuthenticationKey(request); if (!authResult.Result) { return(new JsonErrorResult(authResult.ErrorResponse)); } ErrorResponse validationError = this.ValidateRequest(data); if (validationError != null) { return(new JsonErrorResult(validationError)); } byte[] securedKey = Guid.NewGuid().ToByteArray(); try { using (SqlConnection conn = sqlServer.GetConnection()) { await conn.OpenAsync(); using (SqlCommand cmd = sqlServer.GetSpCommand("dbo.Employee_EnterSecuredSession", conn)) { cmd.AddBinaryParam("@PermanentKey", 16, authResult.Key.ToArray()); cmd.AddBinaryParam("@SecuredKey", 16, securedKey); cmd.AddCharParam("@Phone", 10, data.Phone); cmd.AddCharParam("@PinCode", 4, data.PinCode); SqlParameter retValParam = cmd.AddReturnValue(); await cmd.ExecuteNonQueryAsync(); int retVal = retValParam.GetInt32OrDefault(); if (retVal < 0) { ErrorResponse errorResponse = this.GetErrorResponse(retVal); return(new JsonErrorResult(errorResponse)); } EnterSsResponse response = new EnterSsResponse(); response.SecuredKey = AuthKey.Create(securedKey).ToString() + authResult.Key.ToString(); return(new JsonResult(response)); } } } catch (Exception ex) { return(new JsonErrorResult(this.GetExceptionResponse(ex))); } }
public async Task <IActionResult> Handle(HttpRequest request, CheckStatusRequest data) { AuthByKeyResult authResult = this.GetAuthenticationKey(request); if (!authResult.Result) { return(new JsonErrorResult(authResult.ErrorResponse)); } ErrorResponse validationError = this.ValidateRequest(data); if (validationError != null) { return(new JsonErrorResult(validationError)); } try { using (SqlConnection conn = sqlServer.GetConnection()) { await conn.OpenAsync(); using (SqlCommand cmd = sqlServer.GetSpCommand("dbo.Employee_CheckEmployeeStatus", conn)) { cmd.AddBinaryParam("@PermanentKey", 16, authResult.Key.ToArray()); cmd.AddIntParam("@PlaceId", data.PlaceId); SqlParameter EmployeeIdParam = cmd.AddIntParam("@EmployeeId").Output(); SqlParameter EmployeeFirstNameParam = cmd.AddNVarCharParam("@EmployeeFirstName", 50).Output(); SqlParameter EmployeeLastNameParam = cmd.AddNVarCharParam("@EmployeeLastName", 50).Output(); SqlParameter EmployeeIsDisabledParam = cmd.AddBitParam("@EmployeeIsDisabled").Output(); SqlParameter PlaceGroupIdParam = cmd.AddIntParam("@PlaceGroupId").Output(); SqlParameter PlaceGroupNameParam = cmd.AddNVarCharParam("@PlaceGroupName", 50).Output(); SqlParameter retValParam = cmd.AddReturnValue(); await cmd.ExecuteNonQueryAsync(); int retVal = retValParam.GetInt32OrDefault(); if (retVal == -1) { return(this.GetAuthKeyNotFoundResponse()); } CheckStatusResponse response = new CheckStatusResponse(); response.EmployeeId = EmployeeIdParam.GetInt32OrDefault(); response.EmployeeFirstName = EmployeeFirstNameParam.Value.ToString(); response.EmployeeLastName = EmployeeLastNameParam.Value.ToString(); response.EmployeeIsDisabled = EmployeeIsDisabledParam.GetBooleanOrDefault(); response.PlaceGroupId = PlaceGroupIdParam.GetInt32OrNull(); response.PlaceGroupName = PlaceGroupNameParam.GetStringOrNull(); return(new JsonResult(response)); } } } catch (Exception ex) { return(new JsonErrorResult(this.GetExceptionResponse(ex))); } }
public async Task <IActionResult> Handle(HttpRequest request, ExitSsRequest data) { AuthByKeyPairResult authResult = this.GetAuthenticationKeyPair(request); if (!authResult.Result) { return(new JsonErrorResult(authResult.ErrorResponse)); } try { using (SqlConnection conn = sqlServer.GetConnection()) { await conn.OpenAsync(); using (SqlCommand cmd = sqlServer.GetSpCommand("dbo.Employee_ExitSecuredSession", conn)) { cmd.AddBinaryParam("@PermanentKey", 16, authResult.RegularKey.ToArray()); cmd.AddBinaryParam("@SecuredKey", 16, authResult.SecuredKey.ToArray()); SqlParameter retValParam = cmd.AddReturnValue(); await cmd.ExecuteNonQueryAsync(); int retVal = retValParam.GetInt32OrDefault(); if (retVal < 0) { ErrorResponse errorResponse = this.GetErrorResponse(retVal); return(new JsonErrorResult(errorResponse)); } return(new EmptyResult()); } } } catch (Exception ex) { return(new JsonErrorResult(this.GetExceptionResponse(ex))); } }
public async Task <IActionResult> Handle(RegisterRequest data) { ErrorResponse validationError = this.ValidateRequest(data); if (validationError != null) { return(new JsonErrorResult(validationError)); } try { byte[] permanentKey = Guid.NewGuid().ToByteArray(); using (SqlConnection conn = sqlServer.GetConnection()) { await conn.OpenAsync(); using (SqlCommand cmd = sqlServer.GetSpCommand("Employee_Register", conn)) { cmd.AddNVarCharParam("@FirstName", 50, data.FirstName); cmd.AddNVarCharParam("@LastName", 50, data.LastName); cmd.AddCharParam("@Phone", 10, data.Phone); cmd.AddCharParam("@PinCode", 4, data.PinCode); cmd.AddUniqueIdentifierParam("@LinkParameter", data.LinkParameter); cmd.AddIntParam("@PlaceId", data.PlaceToJoinId); cmd.AddBinaryParam("@PermanentKey", 16, permanentKey); SqlParameter retValParam = cmd.AddReturnValue(); await cmd.ExecuteNonQueryAsync(); int retVal = retValParam.GetInt32OrDefault(); if (retVal < 0) { ErrorResponse errorResponse = this.GetErrorResponse(retVal); return(new JsonErrorResult(errorResponse)); } } } RegisterResponse response = new RegisterResponse(); response.PermanentKey = AuthKey.Create(permanentKey).ToString(); return(new JsonResult(response)); } catch (Exception ex) { return(new JsonErrorResult(this.GetExceptionResponse(ex))); } }
public async Task <IActionResult> Handle(HttpRequest request, JoinPlaceRequest data) { AuthByKeyResult authResult = this.GetAuthenticationKey(request); if (!authResult.Result) { return(new JsonErrorResult(authResult.ErrorResponse)); } ErrorResponse validationError = this.ValidateRequest(data); if (validationError != null) { return(new JsonErrorResult(validationError)); } try { using (SqlConnection conn = sqlServer.GetConnection()) { await conn.OpenAsync(); using (SqlCommand cmd = sqlServer.GetSpCommand("dbo.Employee_JoinPlace", conn)) { cmd.AddBinaryParam("@PermanentKey", 16, authResult.Key.ToArray()); cmd.AddUniqueIdentifierParam("@LinkParameter", data.LinkParameter); cmd.AddIntParam("@PlaceId", data.PlaceToJoinId); SqlParameter retValParam = cmd.AddReturnValue(); await cmd.ExecuteNonQueryAsync(); int retVal = retValParam.GetInt32OrDefault(); if (retVal == -1) { return(this.GetAuthKeyNotFoundResponse()); } } } } catch (Exception ex) { return(new JsonErrorResult(this.GetExceptionResponse(ex))); } return(new EmptyResult()); }
public async Task <IActionResult> Handle(LoginRequest data) { ErrorResponse validationError = this.ValidateRequest(data); if (validationError != null) { return(new JsonErrorResult(validationError)); } try { using (SqlConnection conn = sqlServer.GetConnection()) { await conn.OpenAsync(); using (SqlCommand cmd = sqlServer.GetSpCommand("Employee_Login", conn)) { cmd.AddCharParam("@Phone", 10, data.Phone); cmd.AddCharParam("@PinCode", 4, data.PinCode); SqlParameter PermanentKeyParam = cmd.AddBinaryParam("@PermanentKey", 16).Output(); SqlParameter retValParam = cmd.AddReturnValue(); await cmd.ExecuteNonQueryAsync(); int retVal = retValParam.GetInt32OrDefault(); if (retVal < 0) { ErrorResponse errorResponse = this.GetErrorResponse(retVal); return(new JsonErrorResult(errorResponse)); } LoginResponse response = new LoginResponse(); response.PermanentKey = PermanentKeyParam.Value.ToString(); return(new JsonResult(response)); } } } catch (Exception ex) { return(new JsonErrorResult(this.GetExceptionResponse(ex))); } }
public async Task <IActionResult> Handle(HttpRequest request, FollowReglinkRequest data) { AuthByKeyResult authResult = this.HasAuthenticationKey(request); if (!authResult.Result) { return(new JsonErrorResult(authResult.ErrorResponse)); } ErrorResponse validationError = this.ValidateRequest(data); if (validationError != null) { return(new JsonErrorResult(validationError)); } try { using (SqlConnection conn = sqlServer.GetConnection()) { await conn.OpenAsync(); using (SqlCommand cmd = sqlServer.GetSpCommand("Employee_FollowRegistrationLink", conn)) { cmd.AddUniqueIdentifierParam("@LinkParameter", data.LinkParameter); cmd.AddBinaryParam("@PermanentKey", 16, authResult.Key.ToArray()); SqlParameter LinkPlaceIdParam = cmd.AddIntParam("@LinkPlaceId").Output(); SqlParameter LinkPlaceNameParam = cmd.AddNVarCharParam("@LinkPlaceName", 100).Output(); SqlParameter LinkPlaceAddressParam = cmd.AddNVarCharParam("@LinkPlaceAddress", 100).Output(); SqlParameter LinkPlaceCityParam = cmd.AddNVarCharParam("@LinkPlaceCity", 40).Output(); SqlParameter EmployeeIdParam = cmd.AddIntParam("@EmployeeId").Output(); SqlParameter EmployeePlaceIdParam = cmd.AddIntParam("@EmployeePlaceId").Output(); SqlParameter EmployeeIsDisabledParam = cmd.AddBitParam("@EmployeeIsDisabled").Output(); SqlParameter retValParam = cmd.AddReturnValue(); await cmd.ExecuteNonQueryAsync(); int retVal = retValParam.GetInt32OrDefault(); if (retVal < 0) { ErrorResponse errorResponse = this.GetErrorResponse(retVal); return(new JsonErrorResult(errorResponse)); } FollowReglinkResponse response = new FollowReglinkResponse(); response.LinkPlaceId = LinkPlaceIdParam.GetInt32OrDefault(); response.LinkPlaceName = LinkPlaceNameParam.Value.ToString(); response.LinkPlaceAddress = LinkPlaceAddressParam.Value.ToString(); response.LinkPlaceCity = LinkPlaceCityParam.Value.ToString(); response.EmployeeId = EmployeeIdParam.GetInt32OrNull(); response.EmployeePlaceId = EmployeePlaceIdParam.GetInt32OrNull(); response.EmployeeIsDisabled = EmployeeIsDisabledParam.GetBooleanOrNull(); return(new JsonResult(response)); } } } catch (Exception ex) { return(new JsonErrorResult(this.GetExceptionResponse(ex))); } }
private async Task GetQrCodeAsync(Update update, Employee employee) { string receiverCode = employee.Place.Id.ToString() + "-" + employee.Id.ToString(); string qrString = "ST00011|Name=ООО Чаевые-24|PersonalAcc=40702810970010113722|BankName=МОСКОВСКИЙ ФИЛИАЛ АО КБ \"МОДУЛЬБАНК\"|" + "BIC=044525092|CorrespAcc=30101810645250000092|PayeeINN=1651083591|" + "Purpose=Дарение чаевых коллективу по договору-оферте tips24.ru/" + receiverCode + "|" + "PayerAddress=" + employee.Place.City + ", " + employee.Place.Address + "|LastName=Гость|FirstName=заведения"; //string qrString = "ST00011|Name=ИП Галяутдинов Ринат Ибрагимович|PersonalAcc=40802810470210002677|BankName=МОСКОВСКИЙ ФИЛИАЛ АО КБ \"МОДУЛЬБАНК\"|BIC=044525092|CorrespAcc=30101810645250000092|PayeeINN=165117672519|" + // "Purpose=Дарение чаевых коллективу по договору-оферте tips24.ru/" + receiverCode + "|" + // "PayerAddress="+ employee.PlaceCity + ", " + employee.PlaceAddress + "|LastName=Гость|FirstName=заведения"; byte[] hash = GetQrHash(qrString); if (employee.QrCode != null && employee.QrCode.IsValid(hash)) { ReplyKeyboardMarkup keyboard = GetStandardKeyboardMarkup(employee); Message response = await _telegramClient.SendPhotoAsync(update.Message.From.Id, new InputOnlineFile(employee.QrCode.FileId), null, ParseMode.Default, false, 0, keyboard, _cts.Token); await this.WriteMessageLog(new QrCodeOutputMessageLog(employee, employee.QrCode.FileId, receiverCode, keyboard)); return; } QRCodeWriter qrWriter = new QRCodeWriter(); Dictionary <ZXing.EncodeHintType, object> hints = new Dictionary <ZXing.EncodeHintType, object>(); hints.Add(ZXing.EncodeHintType.CHARACTER_SET, "windows-1251"); hints.Add(ZXing.EncodeHintType.MARGIN, 1); ZXing.Common.BitMatrix matrix = qrWriter.encode(qrString, ZXing.BarcodeFormat.QR_CODE, 640, 640, hints); BarcodeWriter <Rgb24> writer = new BarcodeWriter <Rgb24>(); string fileId = null; using (MemoryStream ms = new MemoryStream()) { using (Image <Rgb24> image = writer.Write(matrix)) { image.Save(ms, new PngEncoder() { ColorType = PngColorType.Grayscale, BitDepth = PngBitDepth.Bit8 }); } ms.Position = 0; ReplyKeyboardMarkup keyboard = GetStandardKeyboardMarkup(employee); Message response = await _telegramClient.SendPhotoAsync(update.Message.From.Id, new InputOnlineFile(ms), null, ParseMode.Default, false, 0, keyboard, _cts.Token); fileId = response.Photo[0].FileId; await this.WriteMessageLog(new QrCodeOutputMessageLog(employee, fileId, receiverCode, keyboard)); } using (SqlConnection conn = _sqlServer.GetConnection()) { await conn.OpenAsync(); using (SqlCommand cmd = _sqlServer.GetSpCommand("telegram.UpdateQrCodeFileId", conn)) { cmd.AddBigIntParam("@UserId", employee.TelegramUserId); cmd.AddVarCharParam("@QrCodeFileId", 64, fileId); cmd.AddBinaryParam("@QrCodeStringHash", 40, hash); await cmd.ExecuteNonQueryAsync(); } } }