Exemplo n.º 1
0
        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);
     }
 }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
 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!");
         }
     }
 }
Exemplo n.º 9
0
        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
            }));
        }
Exemplo n.º 10
0
        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
            }));
        }
Exemplo n.º 11
0
        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
            }));
        }