public async Task <AuthenticationTicket> GetAuthenticateTicketAsync(string username, string password) { var user = await _dbContext.Set <CcCard>().AsNoTracking().FirstOrDefaultAsync(p => p.Username == username); if (user == null) { user = await _dbContext.Set <CcCard>().AsNoTracking().FirstOrDefaultAsync(p => p.Useralias == username); if (user == null) { return(null); } } if (user.Uipass != NesopsUtil.GenerateMD5FromString(user.Username + ":a2billing:" + password)) { return(null); } var identity = new ClaimsIdentity(); identity.AddClaim(new Claim(ClaimTypes.Name, user.Username)); identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())); identity.AddClaim(new Claim(ClaimTypes.Role, "Customer")); var principal = new ClaimsPrincipal(identity); var prop = new AuthenticationProperties() { IssuedUtc = DateTime.UtcNow, ExpiresUtc = DateTime.UtcNow.AddDays(1) }; return(new AuthenticationTicket(principal, prop, "application")); }
public List <CcSipBuddies> ListCcSipBuddies() { using (var context = new Mya2billingContext(options.Options)) { List <CcSipBuddies> result = new List <CcSipBuddies>(); result = context.Set <CcSipBuddies>().ToList(); return(result); } }
public List <CcCard> GenerateMD5PasswordForAllAccounts() { using (var context = new Mya2billingContext(options.Options)) { var users = context.Set <CcCard>().ToList(); foreach (var user in users) { var checkPass = Regex.IsMatch(user.Uipass, "^[0-9a-fA-F]{32}$", RegexOptions.Compiled); if (checkPass || user.Status != 1) { continue; } string passwordGenerated = GenerateMD5FromString(user.Username + ":a2billing:" + user.Uipass); user.Uipass = passwordGenerated; context.Set <CcCard>().Update(user); context.SaveChanges(); } users = context.Set <CcCard>().ToList(); return(users); } }
public async Task <ActionResult <BaseResponseModel <List <CcPrefixReadModel> > > > GetAll([FromQuery] CcPrefixRequestModel requestModel, CancellationToken cancellationToken) { var query = _dbContext.Set <CcPrefix>().AsNoTracking(); var readModel = _mapper.Map <List <CcPrefixReadModel> >((await query.ToListAsync(cancellationToken))); var result = new BaseResponseModel <List <CcPrefixReadModel> > { success = true, code = 200, data = readModel }; return(Ok(result)); }
public CcCard GenerateMD5PasswordForAccount(string accountNumber) { using (var context = new Mya2billingContext(options.Options)) { var user = context.Set <CcCard>().FirstOrDefault(p => p.Username == accountNumber); if (user == null) { return(null); } var checkPass = Regex.IsMatch(user.Uipass, "^[0-9a-fA-F]{32}$", RegexOptions.Compiled); if (checkPass || user.Status != 1) { return(user); } string passwordGenerated = GenerateMD5FromString(user.Username + ":a2billing:" + user.Uipass); user.Uipass = passwordGenerated; context.Set <CcCard>().Update(user); context.SaveChanges(); user = context.Set <CcCard>().FirstOrDefault(p => p.Username == accountNumber); return(user); } }
public List <CcSipBuddies> GenerateMD5SecretForAllAccounts() { using (var context = new Mya2billingContext(options.Options)) { var users = context.Set <CcSipBuddies>().ToList(); foreach (var user in users) { if (user.Secret == "" && user.Md5secret != "") { continue; } string secret = user.Secret; string accountCode = user.Accountcode; string md5secret = GenerateMD5FromString(accountCode + ":asterisk:" + secret); user.Md5secret = md5secret; user.Secret = ""; context.Set <CcSipBuddies>().Update(user); context.SaveChanges(); } users = context.Set <CcSipBuddies>().ToList(); return(users); } }
public CcSipBuddies GenerateMD5SecretForAccount(string username) { using (var context = new Mya2billingContext(options.Options)) { var user = context.Set <CcSipBuddies>().FirstOrDefault(p => p.Username == username); if (user == null) { return(null); } if (user.Secret == "" && user.Md5secret != "") { return(user); } string secret = user.Secret; string accountCode = user.Accountcode; string md5secret = GenerateMD5FromString(accountCode + ":asterisk:" + secret); user.Md5secret = md5secret; user.Secret = ""; context.Set <CcSipBuddies>().Update(user); context.SaveChanges(); user = context.Set <CcSipBuddies>().FirstOrDefault(p => p.Username == username); return(user); } }
public string CheckMD5Secret(string accountCode) { using (var context = new Mya2billingContext(options.Options)) { var user = context.Set <CcSipBuddies>().FirstOrDefault(p => p.Username == accountCode); if (user == null) { return("Account is not exist!"); } if (user.Secret != "" && user.Md5secret == "") { return("Secret is still clear text. Please choose option 3 to generate md5secret"); } else if (user.Secret != "" && user.Md5secret != "") { return("Secret still be clear text and md5secret has something. Please choose option 3 to generate md5secret and remove Secret!"); } else { return("MD5Secret is generated!"); } } }
public async Task <ActionResult <BaseResponseModel <Dictionary <string, int> > > > CallData(CancellationToken cancellationToken) { var query = _dbContext.Set <CcCall>(); var startDate = DateTime.Now.AddDays(-9); var endDate = DateTime.Now; var latestCall = query.OrderBy(x => x.Id).ToList().LastOrDefault(); if (latestCall != null) { startDate = latestCall.Starttime.AddDays(-9); endDate = latestCall.Starttime; } var result = new Dictionary <string, int>(); for (var date = startDate; date <= endDate; date = date.AddDays(1)) { var count = (await query.Where(p => p.Starttime.Date == date.Date).ToListAsync(cancellationToken)).Count(); result[date.Date.ToString("dd/MM/yyyy")] = count; } return(Ok(new BaseResponseModel <Dictionary <string, int> > { message = "Successful", data = result })); }
public async Task <ActionResult> UseVoucher([FromBody] VoucherModel voucherModel, CancellationToken cancellationToken) { var voucher = _dbContext.Set <CcVoucher>().FirstOrDefault(p => p.Voucher == voucherModel.voucherCode && p.Activated == "t"); if (voucher == null) { return(NotFound(new BaseResponseModel <object> { message = "Voucher Not found!", code = 404 })); } if (voucher.Expirationdate < DateTime.UtcNow.AddHours(7)) { return(NotFound(new BaseResponseModel <object> { message = "Voucher is Expired!", code = 404 })); } var card = _dbContext.Set <CcCard>().FirstOrDefault(p => p.Id == voucherModel.cardId); if (card == null /*|| card.Activated != "t"*/) { return(NotFound(new BaseResponseModel <object> { message = "Card Not found", code = 404 })); } //Update Card Credit var currentBalance = card.Credit + Convert.ToDecimal(voucher.Credit); card.Credit = currentBalance; var updateTask = _dbContext.Set <CcCard>().Update(card); if (updateTask.State != EntityState.Modified) { return(BadRequest(new BaseResponseModel <object> { message = "Use Voucher Fail", code = 400 })); } //Update Voucher State voucher.Usedate = DateTime.Now; voucher.Usedcardnumber = card.Username; voucher.Used = 1; voucher.Activated = "f"; var updateVoucherTask = _dbContext.Set <CcVoucher>().Update(voucher); if (updateVoucherTask.State != EntityState.Modified) { return(BadRequest(new BaseResponseModel <object> { message = "Use Voucher Fail", code = 400 })); } //Create Log Refill var logRefill = new CcLogrefill() { CardId = card.Id, Date = DateTime.Now, Description = card.Username + " use voucher", Credit = Convert.ToDecimal(voucher.Credit), RefillType = 1, AddedInvoice = 1, AgentId = null }; var addLogTask = await _dbContext.Set <CcLogrefill>().AddAsync(logRefill); if (addLogTask.State != EntityState.Added) { return(BadRequest(new BaseResponseModel <object> { message = "Use Voucher Fail", code = 400 })); } //Commit await _dbContext.SaveChangesAsync(cancellationToken); return(Ok(new BaseResponseModel <object> { message = "Refill Successful", code = (int)HttpStatusCode.OK })); }
public async Task <ActionResult <object> > Refill(long id, [FromBody] CustomerCredit customer, CancellationToken cancellationToken) { var card = _dbContext.Set <CcCard>().FirstOrDefault(p => p.Id == id); if (card == null /*|| card.Activated != "t"*/) { return(NotFound(new BaseResponseModel <object> { success = false, message = "Card Not found", code = 404 })); } if (customer.description == null || customer.description.Trim() == "") { customer.description = "Refill Using API"; } var VAT = card.Vat; var credited = (Convert.ToDouble(customer.credit) * (100 - VAT) / 100); var currentBalance = card.Credit + Convert.ToDecimal(credited); card.Credit = currentBalance; //Update Card with Credit var updateTask = _dbContext.Set <CcCard>().Update(card); if (updateTask.State == EntityState.Modified) { var logRefill = new CcLogrefill() { CardId = card.Id, Date = DateTime.Now, Description = customer.description, Credit = Convert.ToDecimal(credited), RefillType = 1, AddedInvoice = 1, AgentId = null }; var logRefillRes = await _dbContext.Set <CcLogrefill>().AddAsync(logRefill); await _dbContext.SaveChangesAsync(cancellationToken); var res = new Dictionary <string, object>(); res["card_id"] = card.Id; res["credit_without_vat"] = customer.credit; res["credited"] = credited; res["current_balance"] = currentBalance; res["logrefill_id"] = logRefillRes.Entity.Id; res["vat"] = card.Vat; return(Ok(new BaseResponseModel <IDictionary <string, object> > { message = "Refill Successful", data = res, code = (int)HttpStatusCode.OK })); } return(BadRequest(new BaseResponseModel <object> { success = false, message = "Cannot Update Card", code = 400 })); }