private async Task <RegisterIndividualModel> InitRegisterIndividual(RegisterIndividualModel model)
        {
            model.Citizenships = Enumerable.Empty <SelectListItem>();
            model.Countries    = Enumerable.Empty <SelectListItem>();
            model.States       = Enumerable.Empty <SelectListItem>();

            var countryResponse = await WepApiMethod.SendApiAsync <List <CountryModel> >(HttpVerbs.Get, $"Administration/Country");

            if (countryResponse.isSuccess)
            {
                model.Citizenships      = new SelectList(countryResponse.Data.Where(c => c.Name != "Malaysia").OrderBy(o => o.Name), "Id", "Name", 0);
                model.Countries         = model.Citizenships;
                model.MalaysiaCountryId = countryResponse.Data.Where(c => c.Name == "Malaysia").Select(s => s.Id).FirstOrDefault();
                model.CountryCode       = countryResponse.Data.Where(c => c.Name == "Malaysia").Select(s => s.CountryCode).FirstOrDefault();
            }

            var stateResponse = await WepApiMethod.SendApiAsync <List <StateModel> >(HttpVerbs.Get, $"Administration/State");

            if (stateResponse.isSuccess)
            {
                var states = stateResponse.Data;
                model.States = new SelectList(states.OrderBy(o => o.Name), "Id", "Name", 0);
            }

            return(model);
        }
        public async Task <ActionResult> RegisterIndividual()
        {
            var model = new RegisterIndividualModel();

            model.IsMalaysian = true;

            model = await InitRegisterIndividual(model);

            return(View(model));
        }
        public async Task <ActionResult> RegisterIndividual(RegisterIndividualModel 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");
            }

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

            if (emailResponse.Data)
            {
                ModelState.AddModelError("Email", Language.Auth.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.Auth.ValidIsExistICNo);
                }
                else
                {
                    ModelState.AddModelError("PassportNo", Language.Auth.ValidIsExistPassportNo);
                }
            }

            var passwordResponse = await WepApiMethod.SendApiAsync <bool>(HttpVerbs.Get, $"Auth/ValidatePassword?password={model.Password}");

            if (!passwordResponse.isSuccess)
            {
                var error = JsonConvert.DeserializeObject <Dictionary <string, string> >(passwordResponse.ErrorMessage);

                if (error.ContainsKey("Message"))
                {
                    ModelState.AddModelError("Password", error["Message"]);
                }
            }

            if (ModelState.IsValid)
            {
                var response = await WepApiMethod.SendApiAsync <dynamic>(HttpVerbs.Post, $"Auth/RegisterIndividual", 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: { model.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);

                    TempData["SuccessMessage"] = Language.Auth.AlertRegisterSuccess;

                    return(RedirectToAction("Login", "Auth", new { area = "" }));
                }
            }

            model = await InitRegisterIndividual(model);

            return(View(model));
        }
Exemple #4
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            var view = inflater.Inflate(Resource.Layout.activity_registration_individual_person, container, false);

            #region Объявление переменных

            s_email_individual             = view.FindViewById <EditText>(Resource.Id.s_email_individual);
            s_phone_individual             = view.FindViewById <EditText>(Resource.Id.s_phone_individual);
            s_login_individual             = view.FindViewById <EditText>(Resource.Id.s_login_individual);
            s_pass_individual              = view.FindViewById <EditText>(Resource.Id.s_pass_individual);
            s_pass_confirmation_individual = view.FindViewById <EditText>(Resource.Id.s_pass_confirmation_individual);
            s_surname_individual           = view.FindViewById <EditText>(Resource.Id.s_surname_individual);
            s_name_individual              = view.FindViewById <EditText>(Resource.Id.s_name_individual);
            s_patronymic_individual        = view.FindViewById <EditText>(Resource.Id.s_patronymic_individual);
            s_passport_series_individual   = view.FindViewById <EditText>(Resource.Id.s_passport_series_individual);
            s_passport_number_individual   = view.FindViewById <EditText>(Resource.Id.s_passport_number_individual);
            s_date_birth_individual        = view.FindViewById <EditText>(Resource.Id.s_date_birth_individual);
            s_department_code_individual   = view.FindViewById <EditText>(Resource.Id.s_department_code_individual);
            btn_make_request = view.FindViewById <Button>(Resource.Id.btn_make_request);
            check_personal_data_processing_individual = view.FindViewById <CheckBox>(Resource.Id.check_personal_data_processing_individual);
            check_contract_oferta_individual          = view.FindViewById <CheckBox>(Resource.Id.check_contract_oferta_individual);
            preloader = view.FindViewById <ProgressBar>(Resource.Id.preloader);

            s_date_birth_individual.Focusable = false;
            s_date_birth_individual.Clickable = false;

            #endregion

            s_date_birth_individual.Click += S_date_birth_individual_Click;
            check_personal_data_processing_individual.Click += async delegate
            {
                if (check_personal_data_processing_individual.Checked == true)
                {
                    using (var client = ClientHelper.GetClient())
                    {
                        WebService.Home.HomeService.InitializeClient(client);
                        var o_data = await WebService.Home.HomeService.Privacy();


                        if (o_data.Status == HttpStatusCode.OK)
                        {
                            AgreementResponse o_user_data = new AgreementResponse();
                            o_user_data = o_data.ResponseData;

                            Android.App.FragmentTransaction transaction1 = this.FragmentManager.BeginTransaction();
                            AlertDialog.Builder             alert        = new AlertDialog.Builder(Activity);
                            alert.SetTitle("Согласие на обработку персональных данных");
                            alert.SetMessage(o_user_data.Agreement);

                            alert.SetPositiveButton("Принимаю", (senderAlert, args) =>
                            {
                            });
                            alert.SetNegativeButton("Не принимаю", (senderAlert, args) =>
                            {
                                check_personal_data_processing_individual.Checked = false;
                            });
                            Dialog dialog = alert.Create();
                            dialog.Show();
                        }
                        else
                        {
                            Toast.MakeText(Activity, o_data.Message, ToastLength.Long).Show();
                        }
                    };
                }
            };

            check_contract_oferta_individual.Click += async delegate
            {
                if (check_contract_oferta_individual.Checked == true)
                {
                    using (var client = ClientHelper.GetClient())
                    {
                        WebService.Home.HomeService.InitializeClient(client);
                        var o_data = await WebService.Home.HomeService.Offer();

                        if (o_data.Status == HttpStatusCode.OK)
                        {
                            AgreementResponse o_user_data = new AgreementResponse();
                            o_user_data = o_data.ResponseData;

                            Android.App.FragmentTransaction transaction1 = this.FragmentManager.BeginTransaction();
                            AlertDialog.Builder             alert        = new AlertDialog.Builder(Activity);
                            alert.SetTitle("Согласие с договором офертой");
                            alert.SetMessage(o_user_data.Agreement);

                            alert.SetPositiveButton("Принимаю", (senderAlert, args) =>
                            {
                            });
                            alert.SetNegativeButton("Не принимаю", (senderAlert, args) =>
                            {
                                check_contract_oferta_individual.Checked = false;
                            });
                            Dialog dialog = alert.Create();
                            dialog.Show();
                        }
                        else
                        {
                            Toast.MakeText(Activity, o_data.Message, ToastLength.Long).Show();
                        }
                    };
                }
            };

            btn_make_request.Click += async delegate
            {
                if (CheckingOnNullOrEmptyOfStrings())
                {
                    Toast.MakeText(Activity, "Пожалуйста, заполните все поля. ", ToastLength.Long).Show();
                }
                else
                {
                    if (s_pass_individual.Text == s_pass_confirmation_individual.Text)
                    {
                        if (check_contract_oferta_individual.Checked == true && check_personal_data_processing_individual.Checked == true)
                        {
                            try
                            {
                                RegisterIndividualModel register = new RegisterIndividualModel
                                {
                                    Login               = s_login_individual.Text,
                                    Password            = s_pass_individual.Text,
                                    Email               = s_email_individual.Text,
                                    Phone               = s_phone_individual.Text,
                                    ClientType          = "person",
                                    ClientLastName      = s_surname_individual.Text,
                                    ClientName          = s_name_individual.Text,
                                    ClientPatronymic    = s_patronymic_individual.Text,
                                    ClientBirthday      = s_date_birth_individual.Text,
                                    ClientPassportSerie = s_passport_series_individual.Text,
                                    ClientPassportId    = s_passport_number_individual.Text,
                                    ClientPassportCode  = s_department_code_individual.Text
                                };

                                using (var client = ClientHelper.GetClient())
                                {
                                    AuthService.InitializeClient(client);
                                    var o_data = await AuthService.RegisterIndividual(register);

                                    if (o_data.Status == HttpStatusCode.OK)
                                    {
                                        Toast.MakeText(Activity, o_data.Message, ToastLength.Long).Show();
                                        RegisterResponse o_user_data = new RegisterResponse();
                                        o_user_data          = o_data.ResponseData;
                                        preloader.Visibility = Android.Views.ViewStates.Invisible;

                                        //CrossSettings.Current.AddOrUpdateValue("PresenceOnPage", "true");
                                        CrossSettings.Current.AddOrUpdateValue("role", "user");
                                        CrossSettings.Current.AddOrUpdateValue("login", s_login_individual.Text);
                                        CrossSettings.Current.AddOrUpdateValue("password", s_pass_individual.Text);
                                        CrossSettings.Current.AddOrUpdateValue("token", o_user_data.user.token);
                                        CrossSettings.Current.AddOrUpdateValue("check", "0");
                                        StaticUser.NeedToCreateOrder = true;
                                        StaticUser.PresenceOnPage    = true;

                                        Android.App.FragmentTransaction transaction1 = this.FragmentManager.BeginTransaction();
                                        Intent main = new Intent(Activity, typeof(MainActivity));
                                        StartActivity(main);
                                    }
                                    else
                                    {
                                        Toast.MakeText(Activity, o_data.Message, ToastLength.Long).Show();
                                    }
                                };
                            }
                            catch (Exception ex)
                            {
                                Toast.MakeText(Activity, ex.Message, ToastLength.Long).Show();
                            }
                        }
                        else
                        {
                            Toast.MakeText(Activity, "Необходимо дать согласие на обработку " +
                                           "персональных данных и согласиться с договором офертой", ToastLength.Long).Show();
                        }
                    }
                    else
                    {
                        Toast.MakeText(Activity, "Пароли не совпадают ", ToastLength.Long).Show();
                    }
                }
            };
            return(view);
        }
        /// <summary>
        /// Регистрация физического лица.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static async Task <ServiceResponseObject <RegisterResponse> > RegisterIndividual(RegisterIndividualModel model)
        {
            try
            {
                //status & message
                var formContent = new FormUrlEncodedContent(new Dictionary <string, string>
                {
                    { "login", model.Login },
                    { "password", model.Password },
                    { "email", model.Email },
                    { "phone", model.Phone },
                    { "client_type", model.ClientType },
                    { "client_last_name", model.ClientLastName },
                    { "client_name", model.ClientName },
                    { "client_patronymic", model.ClientPatronymic },
                    { "client_birthday", model.ClientBirthday },
                    { "client_passport_serie", model.ClientPassportSerie },
                    { "client_passport_id", model.ClientPassportId },
                    { "client_passport_code", model.ClientPassportCode }
                });

                HttpResponseMessage response = await _httpClient.PostAsync($"client", formContent);

                string s_result;
                using (HttpContent responseContent = response.Content)
                {
                    s_result = await responseContent.ReadAsStringAsync();
                }

                ServiceResponseObject <RegisterResponse> o_data = new ServiceResponseObject <RegisterResponse>();

                switch (response.StatusCode)
                {
                case HttpStatusCode.BadRequest:
                {
                    ErrorResponseObject error = new ErrorResponseObject();
                    error          = JsonConvert.DeserializeObject <ErrorResponseObject>(s_result);
                    o_data.Status  = response.StatusCode;
                    o_data.Message = error.Errors[0];
                    return(o_data);
                }

                case HttpStatusCode.InternalServerError:
                {
                    ErrorResponseObject error = new ErrorResponseObject();
                    o_data.Status  = response.StatusCode;
                    o_data.Message = "Внутренняя ошибка сервера 500";
                    return(o_data);
                }

                case HttpStatusCode.NotFound:
                {
                    ErrorResponseObject error = new ErrorResponseObject();
                    o_data.Status  = response.StatusCode;
                    o_data.Message = "Ресурс не найден 404";
                    return(o_data);
                }

                case HttpStatusCode.OK:
                {
                    var reg = JsonConvert.DeserializeObject <RegisterResponse>(s_result);
                    o_data.Message      = reg.message;
                    o_data.Status       = response.StatusCode;
                    o_data.ResponseData = new RegisterResponse
                    {
                        message = reg.message,
                        user    = reg.user
                    };
                    return(o_data);
                }

                default:
                {
                    throw new Exception(response.StatusCode.ToString() + " Server Error");
                }
                }
            }
            catch (Exception ex)
            {
                ServiceResponseObject <RegisterResponse> o_data = new ServiceResponseObject <RegisterResponse>();
                o_data.Message = ex.Message;
                return(o_data);
            }
        }
        public IHttpActionResult RegisterIndividual([FromBody] RegisterIndividualModel 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());
                }

                Authentication.GeneratePassword(model.Password);

                //get default role
                var roles = db.RoleDefault.Where(r => r.DefaultRoleType == DefaultRoleType.DefaultIndividual).ToList();

                List <UserRole> userroles = new List <UserRole>();

                foreach (var role in roles)
                {
                    userroles.Add(new UserRole {
                        Role = role.Role
                    });
                }

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

                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
                };

                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, UID = activateAccount.UID }));
            }

            return(BadRequest(ModelState));
        }