public ActionResult AddProgrammer(string SN)
        {
            if(SN == null || SN.Length != 8)
            {
                return View("Error");
            }

            using(var db = new HTDBEnt())
            {
                var exists = db.HTDevices.FirstOrDefault(tf => tf.SN == SN.ToUpper());
                if(exists is HTDevice)
                    return View("Error");
                string userid = User.Identity.GetUserId();
                var currentuser = db.HTUsers.FirstOrDefault(tf => tf.AspNetUserId == userid);

                HTDevice dev = new HTDevice()
                {
                    SN = SN.ToUpper(),
                    AddDate = DateTime.Now,
                    OwnerID = currentuser.Id,
                    Locked = true
                };
                db.HTDevices.Add(dev);
                db.SaveChanges();
                MailManager.SendWhenUserAddNewDevice(SN, currentuser.AspNetUser.UserName);
            }

            return RedirectToAction("Index");
        }
        public async Task<ActionResult> Register(RegisterViewModel model)
        {



            if(ModelState.IsValid)
            {
                var user = new ApplicationUser { UserName = model.Email, Email = model.Email };


                var result = await UserManager.CreateAsync(user, model.Password);
                if(result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

                    var htuser = new HTUser() { AspNetUserId = user.Id ,Locked = true, RegisterDate = DateTime.Now };
                    using(var db = new HTDBEnt())
                    {
                        using(var transaction = db.Database.BeginTransaction())
                        {
                            try
                            {
                                db.HTUsers.Add(htuser);
                                db.SaveChanges();
                                if(model.DeviceSN == null || model.DeviceSN.Length != 8)
                                {
                                    model.DeviceSN = "OOOOOOOO";
                                }
                                var RegDevice = new HTDevice() { SN = model.DeviceSN.ToUpper(), OwnerID = htuser.Id, Locked = true , AddDate  = DateTime.Now};
                                db.HTDevices.Add(RegDevice);
                                db.SaveChanges();
                                transaction.Commit();

                                MailManager.SendNewUserRegister(user.UserName, RegDevice.SN);

                            }
                            catch(Exception)
                            {
                                transaction.Rollback();
                            }


                          
                        }


                    }
                    // Дополнительные сведения о том, как включить подтверждение учетной записи и сброс пароля, см. по адресу: http://go.microsoft.com/fwlink/?LinkID=320771
                    // Отправка сообщения электронной почты с этой ссылкой
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Подтверждение учетной записи", "Подтвердите вашу учетную запись, щелкнув <a href=\"" + callbackUrl + "\">здесь</a>");

                    return RedirectToAction("Index", "Personal");
                }
                AddErrors(result);
            }

            // Появление этого сообщения означает наличие ошибки; повторное отображение формы
            return View(model);
        }