public void CreateFraud_Fraud_GetFraudId() { // RequestMap map = new RequestMap(); //map.set("claim-id", "200002020654"); //Fraud response = Fraud.createForMasterCard(map); //out(response, "fraudId"); //-->300002292548 //arrange String claimId = "200002020654"; FraudRequest fraudRequest = new FraudRequest(); fraudRequest.deviceType = "1"; fraudRequest.acctStatus = "ACCT_IS_OPEN"; fraudRequest.reportDate = "2017-02-11"; fraudRequest.fraudType = "00"; fraudRequest.subType = "K"; fraudRequest.cvcInvalidIndicator = "Y"; fraudRequest.chgbkIndicator = "1"; //act Fraud fraudData = new Fraud(apiController); String result = fraudData.CreateForMasterCard(claimId, fraudRequest); //assert Assert.That(result, Is.EqualTo("300002292548")); }
public void CreateFraud_Fraud_GetFraudId() { //arrange String claimId = "200002020654"; FraudRequest fraudRequest = new FraudRequest(); fraudRequest.deviceType = "1"; fraudRequest.acctStatus = "ACCT_IS_OPEN"; fraudRequest.reportDate = "2017-02-11"; fraudRequest.fraudType = "00"; fraudRequest.subType = "K"; fraudRequest.cvcInvalidIndicator = "Y"; fraudRequest.chgbkIndicator = "1"; apiController.Setup(f => f.Create <FraudResponse>(It.IsAny <long>(), It.IsAny <String>(), fraudRequest)) .Returns(new FraudResponse() { fraudId = "300002292548" }); //act Fraud fraudData = new Fraud(apiController.Object); String result = fraudData.CreateForMasterCard(0, claimId, fraudRequest); //assert Assert.That(result, Is.EqualTo("300002292548")); }
/// <summary> /// Write multiple cache operations to data source /// </summary> /// <param name="operations">Collection of <see cref="WriteOperation"/></param> /// <returns>Collection of <see cref="OperationResult"/> to cache</returns> public ICollection <OperationResult> WriteToDataSource(ICollection <WriteOperation> operations) { // initialize collection of results to return to cache ICollection <OperationResult> operationResults = new List <OperationResult>(); // iterate over each operation sent by cache foreach (var item in operations) { // initialize operation result with failure OperationResult operationResult = new OperationResult(item, OperationResult.Status.Failure); // get object from provider cache item FraudRequest value = item.ProviderItem.GetValue <FraudRequest>(); // check if the type is what you need if (value.GetType().Equals(typeof(FraudRequest))) { // initialize variable for confirmation of write operation // perform write command and get confirmation from data source bool result = sqlDatasource.SaveTransaction(value); // if write operation is successful, change status of operationResult if (result) { operationResult.OperationStatus = OperationResult.Status.Success; } } // insert result operation to collect of results operationResults.Add(operationResult); } // send result to cache return(operationResults); }
public FraudRequestValidation IsValidRequest(FraudRequest request) { if (string.IsNullOrEmpty(request.Directory) || !Directory.Exists(request.Directory)) { return(new FraudRequestValidation(false, "Invalid Directory")); } if ((string.IsNullOrEmpty(request.SearchPattern) && string.IsNullOrEmpty(request.FileName)) || (!string.IsNullOrEmpty(request.SearchPattern) && !request.SearchPattern.EndsWith(".txt")) || (!string.IsNullOrEmpty(request.FileName) && !request.FileName.EndsWith(".txt"))) { return(new FraudRequestValidation(false, "Invalid Search Pattern Extension, and/or File. *.txt Allowed only")); } return(new FraudRequestValidation(true)); }
// add a customer info in cache public void AddtCustomerInCache(string key, DataTypeAttributes attributes, FraudRequest customer) { try { // create a list with write behind option // so whenever a cahcnge happen in data it is upadated back to data source WriteThruOptions options = new WriteThruOptions(WriteMode.WriteBehind); IDistributedList <FraudRequest> list = cache.DataTypeManager.CreateList <FraudRequest>(key, attributes); list.WriteThruOptions = options; list.Add(customer); } catch (Exception ex) { throw; } }
private FraudRequest CreateFraudRequest(TransactionRequest transactionRequest, Result result) { FraudRequest fraudRequest = new FraudRequest(); fraudRequest.CardNumber = transactionRequest.CardNumber; fraudRequest.City = transactionRequest.City; fraudRequest.Country = transactionRequest.Country; fraudRequest.CustomerID = transactionRequest.CustomerID; fraudRequest.CustomerName = transactionRequest.CustomerName; fraudRequest.EmailID = transactionRequest.EmailID; fraudRequest.IPAdress = transactionRequest.IPAdress; fraudRequest.TransactionAmount = transactionRequest.TransactionAmount; fraudRequest.TransactionResult = result; return(fraudRequest); }
Result PerformTransactionOnLocalMemory(TransactionRequest transactionMessage) { // first data is obtained from cache and it is checked if any fraud or suspicious transaction was made // if yes than this transaction is declared as failure // if transaction is not present in local memory than a trained model is run on it. // which declares results, which are sent back to dfraud manager // this is a demo logic you can insert your code here Result result = Result.Valid; try { if (transactionMessage != null) { string customerkey = transactionMessage.CustomerID.ToString(); IList <FraudRequest> customerInfo = ncache.FetchDataFromCache(customerkey); if (customerInfo != null) // if there was already a failed transaction mark th transaction failure { if (learntLogic.FraudFoundInLastTransactions(transactionMessage, customerInfo)) { result = Result.Faliure; } } if (result != Result.Faliure) { bool isValid = learntLogic.IsTransactionValid(transactionMessage); // if transaction is not valid, mark it as suspicious if (!isValid) { result = Result.Suspicious; } } FraudRequest fraudRequest = CreateFraudRequest(transactionMessage, result); ncache.UpdateCustomerInfoInCache(customerkey, fraudRequest); } return(result); } catch { throw; } }
} // Check private void SaveToDb(IList<FraudDetection> fraudDetections, DateTime startDate, int customerId) { try { var customer = this.customerRepository.Get(customerId); var req = new FraudRequest { CheckDate = startDate, Customer = customer, FraudDetections = new HashedSet<FraudDetection>() }; var count = fraudDetections.Count; for (var i = 0; i < count; i++) { var fraud = fraudDetections[i]; fraud.Concurrence = ConcurrencePrepare(fraud); fraud.FraudRequest = req; req.FraudDetections.Add(fraud); } // for this.session.Save(req); if (count != 0) { //All other statuses will be set manually. See documentation //object customer is CustomerProxy so we need customer from DB to update him customer.FraudStatus = FraudStatus.FraudSuspect; } else { if (customer.FraudStatus == FraudStatus.FraudSuspect) customer.FraudStatus = FraudStatus.Ok; } // if this.customerRepository.SaveOrUpdate(customer); } catch (Exception ex) { log.Error( ex, "Failed to save fraud detections for customer {0}, number of detections {1}.", customerId, fraudDetections.Count() ); } // try } // SaveToDb
public void UpdateCustomerInfoInCache(string key, FraudRequest cutomerInfo) { try { // update info of a customer aginst its id WriteThruOptions options = new WriteThruOptions(WriteMode.WriteBehind); IDistributedList <FraudRequest> list = cache.DataTypeManager.GetList <FraudRequest>(key); if (list == null) { AddtCustomerInCache(key, null, cutomerInfo); } else { list.WriteThruOptions = options; list.Add(cutomerInfo); } } catch { throw; } }
/// <summary> /// write an operation to data source /// </summary> /// <param name="operation"></param> /// <returns></returns> public OperationResult WriteToDataSource(WriteOperation operation) { // initialize variable for confirmation of write operation bool result = false; // initialize operation result with failure OperationResult operationResult = new OperationResult(operation, OperationResult.Status.Failure); // get value of object FraudRequest value = operation.ProviderItem.GetValue <FraudRequest>(); // check if value is the type you need if (value.GetType().Equals(typeof(FraudRequest))) { // send data to cache for writing result = sqlDatasource.SaveTransaction((FraudRequest)value); // if write operatio is success, change status of operation result if (result) { operationResult.OperationStatus = OperationResult.Status.Success; } } // return result to cache return(operationResult); }
public IEnumerable <FraudResult> Check(FraudRequest request) { try { // CHECK IF FILE EXISTS AND IF THE EXTESION IS VALID request.Validate(_fraudService); var result = new List <FraudResult>(); string searchPattern = string.IsNullOrEmpty(request.FileName) ? request.SearchPattern : request.FileName; foreach (var file in Directory.EnumerateFiles(request.Directory, searchPattern)) { result.AddRange(Check(file)); } return(result); } catch (Exception ex) { _loggerService.Error("Problem on Checking for Frauds", ex); throw ex; } }
public string CreateForMasterCard(long refKey, string claimId, FraudRequest fraudRequest) { return(_apiController.Create <FraudResponse>(refKey, String.Format("claims/{0}/fraud/mastercard", claimId), fraudRequest).fraudId); }