public operationresult IsOperationSuccessful(long sessionId, string curDate, string checksum) { LogAssembler resultLog = new LogAssembler(); resultLog.AddToLog("starting OperationPerformer.IsOperationSuccessful()"); DateTime externalDate = DateTime.Now; try { externalDate = DateTime.ParseExact(curDate, "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture); } catch (System.FormatException fe) { resultLog.AddToLog("OperationPerformer.IsOperationSuccessful(). DateTime FormatException: " + fe.Message); operationresult result = new operationresult(IntegerConstants.WRONG_PARAMS, "не указаны необходимые параметры запроса", resultLog.getLog()); return(result); } string calculatedMD5 = HashUtility.CalculateMD5(curDate); if (!calculatedMD5.Equals(checksum)) { return(new operationresult(IntegerConstants.WRONG_CHECKSUM, "неправильная контрольная сумма", resultLog.getLog())); } DateTime now = DateTime.Now; if (!(externalDate.CompareTo(now.AddMinutes(10)) < 0 && (externalDate.CompareTo(now.AddMinutes(-10)) > 0))) { return(new operationresult(IntegerConstants.WRONG_TIME, "неправильное время", resultLog.getLog())); } ////now get it from the database LoggingLayer.Operation oper = dataCtx.Operations.Where(t => t.SessionID == sessionId).First(); if (oper == null) { resultLog.AddToLog("search by sessionId gave no result"); return(new operationresult(IntegerConstants.WRONG_PARAMS, "неправильный sessionID", resultLog.getLog())); } else { return(new operationresult(oper.Result.Value, oper.ResultNote, oper.ResultLog)); } }
public operationresult PerformDuetOperation(long sessionId, int clientAccountId, int ctrgAccountId, int ctrgClientAccountId, int contractBindId, string externalDocDate, string externalDocNumber, decimal feeAmount, int functionType, string paymentDetails, decimal transactAmount, string checksum) { LogAssembler resultLog = new LogAssembler(); resultLog.AddToLog("starting OperationPerformer.PerformDuetOperation()"); int numOfSucOhpers = dataCtx.Operations.Where(t => t.SessionID == sessionId).Count(); if (numOfSucOhpers > 0) { operationresult result = new operationresult(IntegerConstants.DUPLICATE_SESSION_ID, "такой sessionId уже есть", resultLog.getLog()); return(result); } LoggingLayer.Operation oper = new DUETCPMConsole.LoggingLayer.Operation(); oper.SessionID = sessionId; oper.ClientAccountID = clientAccountId; oper.ContrAgentAccountID = ctrgAccountId; oper.ContrAgentClientAccountID = ctrgClientAccountId; oper.ContractBindID = contractBindId; oper.CurrentDate = DateTime.Now; oper.ExternalDocNumber = externalDocNumber; oper.feeAmount = feeAmount; oper.FunctionType = functionType; oper.PaymentDetails = paymentDetails; oper.TransactAmount = transactAmount; DateTime externalDate = DateTime.Now; try { externalDate = DateTime.ParseExact(externalDocDate, "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture); oper.ExternalDocDate = externalDate; } catch (System.FormatException fe) { resultLog.AddToLog("OperationPerformer.PerformDuetOperation(). DateTime FormatException: " + fe.Message); operationresult result = new operationresult(IntegerConstants.WRONG_PARAMS, "не указаны необходимые параметры запроса", resultLog.getLog()); oper.Result = IntegerConstants.WRONG_PARAMS; oper.ResultNote = "не указаны необходимые параметры запроса"; oper.ResultLog = resultLog.getLog(); dataCtx.Operations.InsertOnSubmit(oper); dataCtx.SubmitChanges(); return(result); } string calculatedMD5 = HashUtility.CalculateMD5(sessionId, clientAccountId, ctrgAccountId, ctrgClientAccountId, contractBindId, externalDocDate, externalDocNumber, feeAmount, functionType, paymentDetails, transactAmount); if (!calculatedMD5.Equals(checksum)) { operationresult result = new operationresult(IntegerConstants.WRONG_CHECKSUM, "неправильная контрольная сумма", resultLog.getLog()); oper.Result = IntegerConstants.WRONG_CHECKSUM; oper.ResultNote = "неправильная контрольная сумма"; oper.ResultLog = resultLog.getLog(); dataCtx.Operations.InsertOnSubmit(oper); dataCtx.SubmitChanges(); return(result); } DateTime now = DateTime.Now; if (!(externalDate.CompareTo(now.AddMinutes(10)) < 0 && (externalDate.CompareTo(now.AddMinutes(-10)) > 0))) { operationresult result = new operationresult(IntegerConstants.WRONG_TIME, "неправильное время", resultLog.getLog()); oper.Result = IntegerConstants.WRONG_TIME; oper.ResultNote = "неправильное время"; oper.ResultLog = resultLog.getLog(); dataCtx.Operations.InsertOnSubmit(oper); dataCtx.SubmitChanges(); return(result); } operationresult resultS = new operationresult(IntegerConstants.SUCCESS, "Успешно", resultLog.getLog()); oper.Result = IntegerConstants.SUCCESS; oper.ResultNote = "Успешно"; oper.ResultLog = resultLog.getLog(); dataCtx.Operations.InsertOnSubmit(oper); dataCtx.SubmitChanges(); return(resultS); }
public operationresult GetOperationsStatus(Nullable <int> result, string from, string to, string curDate, string checksum) { LogAssembler resultLog = new LogAssembler(); resultLog.AddToLog("starting OperationPerformer.GetOperationsStatus()"); int res = 0; if (result.HasValue) { res = result.Value; } DateTime externalDate = DateTime.Now; DateTime toDate = DateTime.Now; DateTime fromDate = DateTime.Now; try{ externalDate = DateTime.ParseExact(curDate, "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture); toDate = DateTime.ParseExact(to, "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture); fromDate = DateTime.ParseExact(from, "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture); } catch (System.FormatException fe) { resultLog.AddToLog("OperationPerformer.GetOperationsStatus(). DateTime FormatException: " + fe.Message); operationresult resultO = new operationresult(IntegerConstants.WRONG_PARAMS, "не указаны необходимые параметры запроса", resultLog.getLog()); return(resultO); } DateTime now = DateTime.Now; if (!(externalDate.CompareTo(now.AddMinutes(10)) < 0 && (externalDate.CompareTo(now.AddMinutes(-10)) > 0))) { return(new operationresult(IntegerConstants.WRONG_TIME, "неправильное время", resultLog.getLog())); } string calculatedMD5 = HashUtility.CalculateMD5(curDate); if (!calculatedMD5.Equals(checksum)) { return(new operationresult(IntegerConstants.WRONG_CHECKSUM, "неправильная контрольная сумма", resultLog.getLog())); } LoggingLayer.Operation[] opers; if (res != 0 && (from == null || to == null)) { opers = dataCtx.Operations.Where(t => t.Result == res).ToArray(); } else if (res == 0 && from != null && to != null) { opers = dataCtx.Operations.Where(t => (t.CurrentDate.Value.CompareTo(toDate) < 0 && t.CurrentDate.Value.CompareTo(fromDate) > 0)).ToArray(); } else if (res != 0 && from != null && to != null) { opers = dataCtx.Operations.Where(t => (t.CurrentDate.Value.CompareTo(toDate) < 0 && t.CurrentDate.Value.CompareTo(fromDate) > 0) && t.Result == res).ToArray(); } else { return(new operationresult(IntegerConstants.WRONG_PARAMS, "неправильные параметры - чего-то не хватает", resultLog.getLog())); } if (opers != null && opers.Length > 0) { int number = opers.Length; operation[] retopers = new operation[number]; for (int i = 0; i < number; i++) { retopers[i] = new operation(); retopers[i].result = opers[i].Result.Value; retopers[i].resultlog = opers[i].ResultLog; retopers[i].resultnote = opers[i].ResultNote; retopers[i].sessionid = opers[i].SessionID; } operationresult operRes = new operationresult(); operRes.result = IntegerConstants.SUCCESS; operRes.statusNote = "Успешно"; operRes.opercount = number.ToString(); operRes.operations = retopers; return(operRes); } else { operationresult operRes = new operationresult(); operRes.result = IntegerConstants.SUCCESS; operRes.statusNote = "Успешно"; operRes.opercount = 0.ToString();//// no operations return(operRes); } }