public IHttpActionResult GetOfficers() { using (var dbContext = new DataContext()) { var credentials = dbContext.Credentials .AsNoTracking() .Include(f => f.User) .Include(f => f.User.UserDistricts) .Include(f => f.CredentialSystemFunctions) .Where(f => f.EntityType == EntityType.User && f.User != null && f.User.IsOfficer == "1" && f.User.Status == Status.Active && f.Status == Status.Active) .ToList(); var models = credentials.Select(f => new UserModel { ID = f.User.ID, FirstName = f.User.FirstName, LastName = f.User.LastName, MobileNumber = f.User.MobileNumber, CreatedTimestamp = f.User.CreatedTimestamp, Status = (Core.Gateway.Models.Enums.UserStatus)f.User.Status, Email = f.User.Email, IsOfficer = f.User.IsOfficer == "1", ExternalID = f.User.ExternalID, CredentialID = f.ID, UserName = f.UserName, Password = MessageDigest.HashSHA256(f.Password), SystemFunctions = f.CredentialSystemFunctions .Where(k => k.Status == Status.Active) .Select(k => new SystemFunctionModel { ID = k.SystemFunction.ID, Name = k.SystemFunction.Name, Description = k.SystemFunction.Description }) .ToList(), Districts = f.User.UserDistricts .Select(k => new DistrictModel { ID = k.District.ID, BranchName = k.District.BranchName, PaymentOptions = k.District.PaymentOptions }) .ToList() }) .ToList(); return Ok(models); } }
public IHttpActionResult Post([FromBody] CredentialModel model) { if (string.IsNullOrWhiteSpace(model.UserName)) { return(this.BadRequestEx(Error.PopulateInvalidParameter("userName", "Can not be empty."))); } if (string.IsNullOrWhiteSpace(model.Password)) { return(this.BadRequestEx(Error.PopulateInvalidParameter("password", "Can not be empty."))); } var userSession = new Session(); using (var dbContext = new DataContext()) { var credential = dbContext.Credentials.FirstOrDefault(f => f.UserName == model.UserName); if (credential == null) { return(this.BadRequestEx(Error.CredentialNotFound)); } if ((credential.Password != model.Password) && (model.Password.ToUpper() != MessageDigest.HashSHA256(credential.Password))) { return(this.BadRequestEx(Error.PasswordIncorrect)); } if (credential.Status != Status.Active) { return(this.BadRequestEx(Error.CredentialNotActive)); } if (credential.ExpiryTimeStamp < DateTime.Now) { return(this.BadRequestEx(Error.PasswordHasExpired)); } var session = new Session(); session.Credential = credential; session.Token = Guid.NewGuid().ToString(); session.CreatedTimestamp = DateTime.Now; session.ExpiryTimestamp = DateTime.Now.AddHours(8); dbContext.Sessions.Add(session); dbContext.SaveChanges(); SessionModel sessionModel = new SessionModel(); sessionModel.CredentialID = credential.ID; sessionModel.UserName = credential.UserName; sessionModel.EntityID = credential.EntityID; sessionModel.EntityType = (Models.Enums.EntityType)credential.EntityType; sessionModel.SessionToken = session.Token; sessionModel.ExpiryTimestamp = session.ExpiryTimestamp; sessionModel.CreatedTimestamp = session.CreatedTimestamp; var sessionStore = new MemoryCache <SessionModel>("USER_SESSION"); sessionStore.Set(sessionModel.SessionToken, sessionModel, 8 * 60); return(Ok(sessionModel)); } }
public async Task <IHttpActionResult> ChangeAmount(ChangeAmountModel model) { using (var dbContext = new DataContext()) { var credential = dbContext.Credentials.FirstOrDefault(f => f.UserName == model.UserName); if (credential == null) { return(this.BadRequestEx(Error.CredentialNotFound)); } if ((credential.Password != model.Password) && (model.Password.ToUpper() != MessageDigest.HashSHA256(credential.Password))) { return(this.BadRequestEx(Error.PasswordIncorrect)); } if (credential.Status != Core.Data.Enums.Status.Active) { return(this.BadRequestEx(Error.CredentialNotActive)); } if (credential.ExpiryTimeStamp < DateTime.Now) { return(this.BadRequestEx(Error.PasswordHasExpired)); } var offenceRegister = dbContext.OffenceRegister .AsNoTracking() .Include(f => f.EvidenceLog) .Include(f => f.EvidenceLog.ChargeInfos) .FirstOrDefault(f => f.ReferenceNumber == model.ReferenceNumber); if (offenceRegister == null) { return(this.BadRequestEx(Error.RegisterItemDoesNotExist)); } var representationTransaction = new RepresentationTransaction(); representationTransaction.RegisterID = offenceRegister.ID; representationTransaction.ReferenceNumber = offenceRegister.ReferenceNumber; representationTransaction.Amount = (model.CurrentAmount > model.NewAmount) ? model.NewAmount - model.CurrentAmount : model.CurrentAmount - model.NewAmount; representationTransaction.Reason = model.ApplicantReason; representationTransaction.AccountTransactionType = (Core.Data.Enums.AccountTransactionType)model.AccountTransactionType; representationTransaction.AccountCurrencyType = (Core.Data.Enums.AccountCurrencyType)model.AccountCurrencyType; representationTransaction.CapturedCredentialID = credential.EntityID; representationTransaction.CapturedDate = DateTime.Now; representationTransaction.ResultType = Core.Data.Enums.ResultType.Approved; representationTransaction.EvaluatedDate = model.ApprovedDate.HasValue ? model.ApprovedDate.Value : DateTime.Now; representationTransaction.EvaluatedBy = model.ApprovedBy; representationTransaction.ChargeNumber = 1; representationTransaction.ChargeCode = offenceRegister.EvidenceLog.ChargeInfos[0].OffenceCode.Code; representationTransaction.ProcessedDate = DateTime.Now; representationTransaction.ProcessedTerminalName = model.TerminalName; representationTransaction.ProcessedCredentialID = credential.EntityID; dbContext.RepresentationTransactions.Add(representationTransaction); var generatedReferenceNumber = dbContext.GeneratedReferenceNumbers.First(f => f.ReferenceNumber == model.ReferenceNumber); var paymentTransaction = dbContext.PaymentTransactions.Include(f => f.TransactionItems).FirstOrDefault(f => f.TransactionToken == generatedReferenceNumber.ExternalToken && f.Status == Kapsch.Core.Data.Enums.PaymentTransactionStatus.Added); paymentTransaction.Amount = model.NewAmount; paymentTransaction.TransactionItems.Single().Amount = model.NewAmount; dbContext.SaveChanges(); var connection = (OracleConnection)dbContext.Database.Connection; using (var command = new OracleCommand()) { try { if (connection.State != ConnectionState.Open) { connection.Open(); } command.Parameters.Add("P_USER_ID", OracleDbType.Int32).Value = credential.EntityID; command.Parameters.Add("P_REFERENCE_NUMBER", OracleDbType.Varchar2).Value = model.ReferenceNumber; command.Parameters.Add("P_ACCOUNT_TRANS_TYPE_ID", OracleDbType.Int32).Value = (int)model.AccountTransactionType; command.Parameters.Add("P_REFERENCE_TRANSACTION_ID", OracleDbType.Int32).Value = representationTransaction.ID; command.Parameters.Add("P_REFERENCE_TRANSACTION_TYPEID", OracleDbType.Int32).Value = (int)model.ReferenceTransactionType; command.Parameters.Add("P_AMOUNT", OracleDbType.Decimal).Value = representationTransaction.Amount; command.Parameters.Add("O_MESSAGE", OracleDbType.Varchar2, 2056).Direction = ParameterDirection.Output; ExcecuteNonQuery(command, "FINANCE.FINANCIALS.ADD_VALIDATE_TRANSACTION", connection); if ((command.Parameters["O_MESSAGE"].Value is DBNull)) { return(Ok()); } var message = ((OracleString)command.Parameters["O_MESSAGE"].Value).Value; if (message != "Success") { return(this.BadRequestEx(Error.PopulateMethodFailed(message))); } } catch (Exception ex) { return(this.BadRequestEx(Error.PopulateUnexpectedException(ex))); } finally { foreach (OracleParameter parameter in command.Parameters) { if (parameter.Value is IDisposable) { ((IDisposable)(parameter.Value)).Dispose(); } parameter.Dispose(); } } } await Task.Run(() => { var paymentProvider = resolvePaymentProvider(); var transactionModel = new ThirdParty.Payment.Models.TransactionModel { CompanyRef = model.ReferenceNumber, CompanyAccRef = string.Empty, Amount = model.NewAmount, UserID = SessionModel.UserName, ServiceDescription = "Notice issued.", ServiceType = 6067 }; try { paymentProvider.UpdateTransaction(generatedReferenceNumber.ExternalToken, transactionModel); } catch (Exception) { using (var dataContext = new DataContext()) { InsertQueueItem( dataContext, new PaymentProviderQueueItem { CreatedTimestamp = DateTime.Now, OperationName = "UpdateTransaction", PaymentProvider = (Kapsch.Core.Data.Enums.PaymentProvider)paymentProvider.ID, Arguments = JsonConvert.SerializeObject(transactionModel), QueueStatus = Kapsch.Core.Data.Enums.QueueStatus.Queued, TransactionToken = generatedReferenceNumber.ExternalToken }); } } }); return(Ok()); } }