public IHttpActionResult DeleteAccount(Account acct) { var user = getUser(); if (user == null) return BadRequest(); var au = db.AccountUsers.Where(c => c.Uid == user.Id && c.IsPrimary && c.AcctId == acct.Id).FirstOrDefault(); if (au == null) return NotFound(); var account = db.Accounts.Find(acct.Id); var delTrans = db.Database.BeginTransaction(); try { db.AccountUsers.RemoveRange(db.AccountUsers.Where(c => c.AcctId == acct.Id)); db.Accounts.Remove(account); db.SaveChanges(); delTrans.Commit(); } catch { delTrans.Rollback(); } delTrans.Dispose(); return Ok(account); }
public void FailLogin(Account acct) { var u = getUser(); if (u != null && acct.Id > 0) { if (db.AccountUsers.Where(au => au.Uid == u.Id && au.AcctId == acct.Id).Count() > 0) { var aus = db.AccountUsers.Include(au => au.Account).Include(au => au.User).Where(au => au.AcctId == acct.Id && au.IsOwner).ToList(); if (aus.Count > 0) { var account = aus.First().Account; account.IsAvailable = false; db.Entry(account).State = EntityState.Modified; db.SaveChanges(); MailMessage msg = new MailMessage(); msg.From = new MailAddress("*****@*****.**"); foreach (var au in aus) { msg.To.Add(au.User.Email); } msg.CC.Add(u.Email); MailHelper.AddAdminMail(msg); msg.Subject = "Fail to login" + account.BoxName; msg.Body = "<h3>Hi Owners,</h3>"; msg.Body += string.Format("<p>Fail to login SAP Box:{0}</p>", account.BoxName); msg.Body += "<p>This box has been set to unavailable in SAP Logon tool</p>"; msg.Body += "<p>Please change/reset your password first and then update the lastest info in SAP Logon tool</p>"; msg.IsBodyHtml = true; MailHelper.SendMail(msg); } } } }
public IHttpActionResult UpdateAccount(Account account) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var request = Request.RequestUri; var user = getUser(); if (user != null) { if (account.Id == 0) { AccountUser au = new AccountUser() { CreateDt = DateTime.Now, IsOwner = true, IsPrimary = true, Uid = user.Id, Account = account }; account.AccountUsers.Add(au); db.Accounts.Add(account); db.SaveChanges(); //if not clear accout users, it will throw an Serializable error. account.AccountUsers.Clear(); return Ok(account); } else { var myAct = from at in db.Accounts join au in db.AccountUsers on at.Id equals au.AcctId where at.Id == account.Id && au.IsOwner && au.Uid == user.Id select at; if (myAct.Count() > 0) { db.Entry(account).State = EntityState.Modified; account.UpdateDt = DateTime.Now; db.SaveChanges(); return Ok(account); } else { return NotFound(); } } } return StatusCode(HttpStatusCode.NoContent); }
public void RequestAccess(Account acct) { if (u != null) { var aus = db.AccountUsers.Include(au => au.Account).Include(au => au.User).Where(au => au.AcctId == acct.Id && au.IsOwner).ToList(); if (aus.Count > 0) { var accout = aus.First().Account; Access acs = new Access(); acs.AcctId = accout.Id; acs.Uid = u.Id; acs.CreateDt = DateTime.Now; db.Accesses.Add(acs); AccessLog log = new AccessLog(); log.AcctId = accout.Id; log.CreateDt = DateTime.Now; log.Uid = u.Id; db.AccessLogs.Add(log); db.SaveChanges(); string _basicURL = "http://" + Request.RequestUri.Host + ":" + Request.RequestUri.Port; string htmlLink = _basicURL + "?index=";// +returnId.ToString() + "&token=" + md5; MailMessage msg = new MailMessage(); msg.From = new MailAddress("*****@*****.**"); foreach (var au in aus) { msg.To.Add(au.User.Email); } msg.CC.Add(u.Email); MailHelper.AddAdminMail(msg); msg.Subject = "Applying access for SAP Box :" + accout.BoxName; msg.Body = "<h3>Hi Owners,</h3>"; msg.Body += "<p>" + u.UserName + " is applying the access of SAP Box:" + accout.BoxName + "</p>"; msg.Body += "<p>You can grant access for her/him by <a href='" + htmlLink + "'>Click Me</a></p>"; msg.Body += "<p>If you don't want to do this,please ignore the mail</p>"; msg.IsBodyHtml = true; MailHelper.SendMail(msg); } } }
public IHttpActionResult GetAccount(Account myAccount) { var user = getUser(); Account acct = null; if (user != null) { acct = (from account in db.Accounts join accountUser in db.AccountUsers on account.Id equals accountUser.AcctId where accountUser.Uid == user.Id && account.Id == myAccount.Id && account.IsAvailable select account).FirstOrDefault(); } if (acct == null) { return NotFound(); } else { AcctUsageLog log = new AcctUsageLog(); log.AcctId = acct.Id; log.LogDt = DateTime.Now; log.IsManual = true; log.Machine = ""; log.IsExecute = true; log.Uid = user.Id; db.AcctUsageLogs.Add(log); db.SaveChanges(); } return Ok(acct); }
public IHttpActionResult GetAccess(Account account) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (u != null) { Access accs = null; var accesses = db.Accesses.Where(c => c.AcctId == account.Id && c.Uid == u.Id).ToList(); if (accesses.Count > 0) { accs = accesses.First(); } else { accs = new Access(); accs.AcctId = account.Id; accs.CreateDt = DateTime.Now; accs.Uid = u.Id; db.Accesses.Add(accs); AccessLog log = new AccessLog(); log.AcctId = account.Id; log.Uid = u.Id; log.CreateDt = DateTime.Now; db.AccessLogs.Add(log); db.SaveChanges(); } var aus = db.AccountUsers.Include(au => au.User).Where(au => au.AcctId == account.Id && au.IsOwner).ToList(); if (aus.Count > 0) { MailMessage msg = new MailMessage(); msg.From = new MailAddress("*****@*****.**"); foreach (var au in aus) { msg.To.Add(au.User.Email); } msg.CC.Add(u.Email); MailHelper.AddAdminMail(msg); var htmlLink = "http://" + Request.RequestUri.Host + ":" + Request.RequestUri.Port + "/SAPAccounts/SetAccess/" + accs.Id; msg.Subject = "Applying access for SAP Box :" + account.BoxName; msg.Body = "<h3>Hi Owners,</h3>"; msg.Body += "<p>" + u.UserName + " is applying the access of SAP Box:" + account.BoxName + "</p>"; msg.Body += "<p>You can grant access for her/him by <a href='" + htmlLink + "'>Click Me</a></p>"; msg.Body += "<p>If you don't want to do this,please ignore the mail</p>"; msg.IsBodyHtml = true; MailHelper.SendMail(msg); return Ok(); } } return NotFound(); }
// GET: SAPAccounts/Details/5 public ActionResult Details(int id) { var user = InternalAttribute.GetUser(); if (user == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } IEnumerable<AccountUser> accounts = db.AccountUsers.Include(c => c.User).Include(c => c.Account).Where(c => c.AcctId == id).ToList(); var account = new Account(); if (accounts.Count() > 0) { account = accounts.First().Account; } return View(account); }