Example #1
0
        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"));
        }
Example #2
0
        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);
        }
Example #4
0
        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);
        }
Example #11
0
        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;
            }
        }
Example #12
0
 public string CreateForMasterCard(long refKey, string claimId, FraudRequest fraudRequest)
 {
     return(_apiController.Create <FraudResponse>(refKey, String.Format("claims/{0}/fraud/mastercard", claimId), fraudRequest).fraudId);
 }