예제 #1
0
        public async Task <ApiResponse> CreateIndividual([FromBody] CreateIndividualModel model)
        {
            var response =
                await _mediator.Send(
                    Mapper.Map <CreateIndividualModel, CreateIndividualCommand>(model));

            if (response.IsSuccess)
            {
                return(ApiResponseHandler.GenerateResponse(response.Type, response.Data));
            }

            return(ApiResponseHandler.GenerateResponse(response.Type, null, ApiError.GenerateError(response)));
        }
예제 #2
0
        public async Task <ActionResult> Create()
        {
            var model = new CreateIndividualModel();

            model.IsMalaysian = true;

            var countries = await GetCountries();

            model.MalaysiaCountryId = countries.Where(c => c.Name == "Malaysia").Select(s => s.Id).FirstOrDefault();
            model.CountryCode       = countries.Where(c => c.Name == "Malaysia").Select(s => s.CountryCode).FirstOrDefault();

            model.States       = new SelectList(await GetStates(), "Id", "Name", 0);
            model.Countries    = new SelectList(countries.Where(c => c.Name != "Malaysia"), "Id", "Name", 0);
            model.Citizenships = new SelectList(countries.Where(c => c.Name != "Malaysia"), "Id", "Name", 0);
            model.Roles        = new SelectList(await GetRoles(), "Id", "Name", 0);

            return(View(model));
        }
예제 #3
0
        public async Task <ActionResult> Create(CreateIndividualModel model)
        {
            if (model.IsMalaysian)
            {
                ModelState.Remove("PassportNo");
                ModelState.Remove("CitizenshipId");
                ModelState.Remove("PostCodeNonMalaysian");
                ModelState.Remove("State");
                ModelState.Remove("CountryId");

                model.CountryId = model.MalaysiaCountryId;
            }
            else
            {
                ModelState.Remove("ICNo");
                ModelState.Remove("PostCodeMalaysian");
                ModelState.Remove("StateId");
                model.StateId = null;
            }

            var emailResponse = await WepApiMethod.SendApiAsync <bool>(HttpVerbs.Get, $"Administration/User/IsEmailExist?id={null}&email={model.Email}");

            if (emailResponse.Data)
            {
                ModelState.AddModelError("Email", Language.Administrator.Individual.ValidIsExistEmail);
            }

            var icno = model.ICNo;

            if (!model.IsMalaysian)
            {
                icno = model.PassportNo;
            }

            var icnoResponse = await WepApiMethod.SendApiAsync <bool>(HttpVerbs.Get, $"Administration/User/IsICNoExist?id={null}&icno={icno}");

            if (icnoResponse.Data)
            {
                if (model.IsMalaysian)
                {
                    ModelState.AddModelError("ICNo", Language.Administrator.Individual.ValidIsExistICNo);
                }
                else
                {
                    ModelState.AddModelError("PassportNo", Language.Administrator.Individual.ValidIsExistPassportNo);
                }
            }

            if (ModelState.IsValid)
            {
                var response = await WepApiMethod.SendApiAsync <dynamic>(HttpVerbs.Post, $"Administration/Individual", model);

                if (response.isSuccess)
                {
                    ParameterListToSend notificationParameter = new ParameterListToSend();
                    notificationParameter.UserFullName = model.Name;
                    notificationParameter.Link         = $"<a href = '" + BaseURL + "/Auth/ActivateAccount/" + response.Data.UID + "' > here </a>";
                    notificationParameter.LoginDetail  = $"Email: { model.Email }\nPassword: { response.Data.Password }";

                    CreateAutoReminder notification = new CreateAutoReminder
                    {
                        NotificationType      = NotificationType.ActivateAccount,
                        NotificationCategory  = NotificationCategory.Learning,
                        ParameterListToSend   = notificationParameter,
                        StartNotificationDate = DateTime.Now,
                        ReceiverId            = new List <int> {
                            (int)response.Data.UserId
                        }
                    };

                    var responseNotification = await WepApiMethod.SendApiAsync <ReminderResponse>(HttpVerbs.Post, $"Reminder/SLA/GenerateAutoNotificationReminder/", notification);

                    await LogActivity(Modules.Setting, "Create Individual User", model);

                    TempData["SuccessMessage"] = Language.Administrator.Individual.AlertCreateSuccess;

                    return(RedirectToAction("List", "Individual", new { area = "Administrator" }));
                }
                else
                {
                    TempData["ErrorMessage"] = Language.Administrator.Individual.AlertCreateFail;

                    return(RedirectToAction("List", "Individual", new { area = "Administrator" }));
                }
            }

            var countries = await GetCountries();

            model.MalaysiaCountryId = countries.Where(c => c.Name == "Malaysia").Select(s => s.Id).FirstOrDefault();
            model.CountryCode       = countries.Where(c => c.Name == "Malaysia").Select(s => s.CountryCode).FirstOrDefault();
            model.States            = new SelectList(await GetStates(), "Id", "Name", 0);
            model.Countries         = new SelectList(countries.Where(c => c.Name != "Malaysia"), "Id", "Name", 0);
            model.Citizenships      = new SelectList(countries.Where(c => c.Name != "Malaysia"), "Id", "Name", 0);
            model.Roles             = new SelectList(await GetRoles(), "Id", "Name", 0);

            return(View(model));
        }
예제 #4
0
        public IHttpActionResult Post([FromBody] CreateIndividualModel model)
        {
            if (model.IsMalaysian)
            {
                ModelState.Remove("model.PassportNo");
                ModelState.Remove("model.CitizenshipId");
                ModelState.Remove("model.PostCodeNonMalaysian");
                ModelState.Remove("model.State");
            }
            else
            {
                ModelState.Remove("model.ICNo");
                ModelState.Remove("model.PostCodeMalaysian");
                ModelState.Remove("model.StateId");
            }

            if (ModelState.IsValid)
            {
                var countryCode = db.Country.Where(c => c.Id == model.CountryId && c.Display).FirstOrDefault();

                if (countryCode == null)
                {
                    return(InternalServerError());
                }

                var password = "******";

                if (FEPHelperMethod.CurrentSystemMode() != SystemMode.Development)
                {
                    password = Authentication.RandomString(10, true);
                }

                Authentication.GeneratePassword(password);

                var account = new UserAccount
                {
                    LoginId      = model.Email,
                    IsEnable     = false,
                    HashPassword = Authentication.HashPassword,
                    Salt         = Authentication.Salt,
                    LoginAttempt = 0
                };

                var individual = new IndividualProfile
                {
                    IsMalaysian   = model.IsMalaysian,
                    CitizenshipId = model.CitizenshipId,
                    Address1      = model.Address1,
                    Address2      = model.Address2,
                    PostCode      = model.IsMalaysian ? model.PostCodeMalaysian : model.PostCodeNonMalaysian,
                    City          = model.City,
                    StateName     = model.State,
                    StateId       = model.StateId,
                    CountryId     = model.CountryId
                };

                var user = new User
                {
                    UserType          = UserType.Individual,
                    Name              = model.Name,
                    Email             = model.Email,
                    ICNo              = model.IsMalaysian ? model.ICNo : model.PassportNo,
                    MobileNo          = model.MobileNo,
                    CountryCode       = countryCode.CountryCode1,
                    Display           = true,
                    CreatedBy         = null,
                    CreatedDate       = DateTime.Now,
                    UserAccount       = account,
                    IndividualProfile = individual
                };

                foreach (var roleid in model.RoleIds)
                {
                    var userrole = new UserRole
                    {
                        RoleId      = roleid,
                        UserAccount = account,
                    };

                    db.UserRole.Add(userrole);
                }

                db.User.Add(user);

                ActivateAccount activateaccount = new ActivateAccount
                {
                    UID         = Authentication.RandomString(50, true),//random alphanumeric
                    UserId      = user.Id,
                    CreatedDate = DateTime.Now,
                    IsActivate  = false
                };

                db.ActivateAccount.Add(activateaccount);

                db.SaveChanges();

                return(Ok(new { UserId = user.Id, Password = password, UID = activateaccount.UID }));
            }

            return(BadRequest(ModelState));
        }