Exemplo n.º 1
0
        public ActionResult Register(CompanyRegister companyRegister, HttpPostedFileBase logo)
        {
            if (_userService.Get(userName: companyRegister.CreatedBy.UserName).Any())
            {
                ModelState.AddModelError("",
                                         $"Username {companyRegister.CreatedBy.UserName} is already in use. Please try with a different username");
                return(View(companyRegister));
            }

            // need to handle the file size
            if (logo != null && logo.ContentLength > 0 && logo.ContentType.Contains("image"))
            {
                using (Stream inputStream = logo.InputStream)
                {
                    MemoryStream memoryStream = inputStream as MemoryStream;
                    if (memoryStream == null)
                    {
                        memoryStream = new MemoryStream();
                        inputStream.CopyTo(memoryStream);
                    }
                    companyRegister.Company.LogoUrl    = logo.FileName;
                    companyRegister.Company.LogoBinary = memoryStream.ToArray();
                }
            }
            companyRegister.CreatedBy.UserRegisteredIp     = UserSession.IpAddress;
            companyRegister.CreatedBy.RegisteredMacAddress = UserSession.MacAddress;
            companyRegister.CreatedBy.LastActivityIp       = UserSession.IpAddress;
            companyRegister.CreatedBy.LastActiveMacAddress = UserSession.MacAddress;
            companyRegister.CreatedBy.EmploymentTypeId     = (int)EmploymentType.FullTime;

            companyRegister.Company.Id = _companyService.Add(companyRegister.Company);

            if (companyRegister.Company.Id == (int)RegistrationStatus.DuplicateCompany)
            {
                ModelState.AddModelError("", $"Company {companyRegister.CreatedBy.UserName} is already registerted");
                return(View(companyRegister));
            }
            if (companyRegister.Company.Id < 1)
            {
                ViewBag.Message = "Sorry. Failed to Add your company";
                return(View(companyRegister));
            }

            companyRegister.CreatedBy.CompanyId = companyRegister.Company.Id;
            try
            {
                var result = UserManager.CreateAsync(companyRegister.CreatedBy, companyRegister.CreatedBy.Password)
                             .Result;
                if (result.Succeeded)
                {
                    //SignInManager.SignIn(companyRegister.CreatedBy, isPersistent: false, rememberBrowser: false);
                    _userService.AddAddress(companyRegister.CreatedBy.RegistrationAddress);
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error);
                    }
                    return(View(companyRegister));
                }
            }
            catch
            {
                // ignored
            }

            if (companyRegister.Company.Id > 0)
            {
                _companyService.SetCreatedBy(companyId: companyRegister.Company.Id,
                                             userId: companyRegister.CreatedBy.Id);
                ViewBag.Message = "Your company code <strong>" + companyRegister.Company.RegisterCode +
                                  "</strong>. Your employees need this code to sign up for their account.";
#pragma warning disable 4014
                SignInManager.SignInAsync(companyRegister.CreatedBy, isPersistent: false,
#pragma warning restore 4014
                                          rememberBrowser: false);

                string emailMessage = _companyService.ComposeRegisteredEmail(companyRegister);
                _emailService.SendEmail(emailMessage, "Successfully Registered", new[] { companyRegister.CreatedBy.Email });
                return(RedirectToAction("Index", "Home"));
            }
            return(View(companyRegister));
        }