public async Task <IActionResult> UpdateAccount([FromBody] AccountRequestDTO request)
        {
            bool result = await _accountQueryService.UpdateAccount(request);

            if (result)
            {
                return(Ok(new
                {
                    status = "success"
                }));
            }

            return(BadRequest("Error"));
        }
        public async Task <IActionResult> InsertAccount([FromBody] AccountRequestDTO request)
        {
            Account _account = new Account();

            _account            = Mapper.Map(request, _account);
            _account.CreateDate = DateTime.Now;
            _account.UpdateDate = DateTime.Now;
            _account.IsActive   = true;

            bool result = await _accountQueryService.InsertAccount(_account);

            if (result)
            {
                return(Ok(new
                {
                    status = "success"
                }));
            }

            return(BadRequest("Error"));
        }
 public async Task <bool> UpdateAccount(AccountRequestDTO account)
 {
     try
     {
         Account _account = this._context.Account.FirstOrDefault(c => c.Id == account.Id);
         if (_account != null)
         {
             _account            = Mapper.Map(account, _account);
             _account.UpdateDate = DateTime.Now;
             _context.Account.Update(_account);
             _context.SaveChanges();
             return(true);
         }
         return(false);
     }
     catch (Exception ex)
     {
         Console.Write(ex.ToString());
         return(false);
     }
 }
        public async Task <dynamic> createAccount([FromBody] AccountRequestDTO request)
        {
            DateTime now             = DateTime.UtcNow;
            Account  existingAccount = db.Account.Where(a => a.AccountName == request.AccountName).FirstOrDefault();

            if (existingAccount == null || existingAccount.IsActive == false)
            {
                if (existingAccount == null)
                {
                    Account acc = new Account()
                    {
                        AccountName     = request.AccountName,
                        AccountPassword = request.PasswordPreHashed ? request.AccountPassword : Crypto.ComputeSHA256(request.AccountPassword),
                        CreateDt        = now,
                        LastSignInDt    = now,
                        MachineId       = request.MachineId,
                        MediusStats     = request.MediusStats,
                        AppId           = request.AppId,
                    };

                    db.Account.Add(acc);
                    db.SaveChanges();


                    List <AccountStat> newStats = (from ds in db.DimStats
                                                   select new AccountStat()
                    {
                        AccountId = acc.AccountId,
                        StatId = ds.StatId,
                        StatValue = ds.DefaultValue
                    }).ToList();
                    db.AccountStat.AddRange(newStats);

                    AccountStatus newStatusData = new AccountStatus()
                    {
                        AccountId = acc.AccountId,
                        LoggedIn  = false,
                        GameId    = null,
                        ChannelId = null,
                        WorldId   = null
                    };
                    db.AccountStatus.Add(newStatusData);

                    db.SaveChanges();
                    return(await getAccount(acc.AccountId));
                }
                else
                {
                    existingAccount.IsActive        = true;
                    existingAccount.AccountPassword = request.AccountPassword;
                    existingAccount.ModifiedDt      = now;
                    existingAccount.MediusStats     = request.MediusStats;
                    existingAccount.AppId           = request.AppId;
                    existingAccount.MachineId       = request.MachineId;
                    existingAccount.LastSignInDt    = now;
                    db.Account.Attach(existingAccount);
                    db.Entry(existingAccount).State = Microsoft.EntityFrameworkCore.EntityState.Modified;

                    List <AccountStat> newStats = (from ds in db.DimStats
                                                   select new AccountStat()
                    {
                        AccountId = existingAccount.AccountId,
                        StatId = ds.StatId,
                        StatValue = ds.DefaultValue
                    }).ToList();
                    db.AccountStat.AddRange(newStats);

                    db.SaveChanges();
                    return(await getAccount(existingAccount.AccountId));
                }
            }
            else
            {
                return(StatusCode(403, $"Account {request.AccountName} already exists."));
            }
        }