// GET: User/Edit/5
        public ActionResult Edit(int id)
        {
            if (CurrentUser != null)
            {
                ViewData["SessionEnded"] = false;
                var User = UserService.FindUserByID(id);
                vw_UserDataModel    userModel  = null;
                UserPersonViewModel personData = null;
                if (User != null)
                {
                    userModel = GetUserModel(User);
                    if (User.PersonID.HasValue)
                    {
                        Base.Views.vw_PersonData person = PersonService.GetPerson(User.PersonID.Value);
                        personData = new UserPersonViewModel
                        {
                            CBirthDate              = person.BirthDate,
                            Job                     = person.Job,
                            Name                    = person.Name,
                            NationalityID           = person.NationalityID,
                            NatNo                   = person.NatNo,
                            PassportNo              = person.PassportNo,
                            PhoneNo                 = User.PhoneNo,
                            address_address         = person.address.address,
                            address_CityID          = person.address.CityID,
                            address_PoliceStationID = person.address.PoliceStationID,
                            ID         = person.ID,
                            BirthDateT = person.BirthDate,
                        };
                    }
                }
                string[] li = Regex.Split(personData.address_address.ToString(), "/");
                if (li[0] != null)
                {
                    personData.address_address = li[0];
                }
                if (li[1] != null)
                {
                    personData.address_CityID = int.Parse(li[1]);
                }
                if (li[2] != null)
                {
                    personData.address_PoliceStationID = int.Parse(li[2]);
                }
                personData.Age = CalculateAge(personData.BirthDateT.Value);

                return(PartialView(GetUserViewModel(userModel, personData)));
            }
            else
            {
                ViewData["SessionEnded"] = true;
                return(PartialView());
            }
        }
 private static Base.Views.vw_PersonData GetPersonData(UserPersonViewModel PersonData)
 {
     return(new Base.Views.vw_PersonData
     {
         ID = PersonData.ID,
         Job = PersonData.Job,
         BirthDate = PersonData.GetBirthDate(),
         Name = PersonData.Name,
         NationalityID = PersonData.NationalityID,
         NatNo = PersonData.NatNo,
         PassportNo = PersonData.PassportNo,
         address = (PersonData.address_address != null ? new Base.Views.vw_Address {
             address = PersonData.address_address, CityID = PersonData.address_CityID, PoliceStationID = PersonData.address_PoliceStationID
         } : null),
         CleanFullName = Base.Utilities.RemoveSpaces(Base.Utilities.RemoveSpecialCharacters(PersonData.Name)),
     });
 }
 private UserCreateViewModel GetUserViewModel(vw_UserDataModel UserData = null, UserPersonViewModel PersonData = null)
 {
     if (UserData == null)
     {
         UserData = new vw_UserDataModel();
     }
     if (PersonData == null)
     {
         PersonData = new UserPersonViewModel();
     }
     return(new UserCreateViewModel
     {
         UserData = UserData,
         PersonData = new PersonViewModel(PersonData, lookupService, PersonService, PersonData.ID != 0 ? Modes.Update : Modes.Add),
         UserTypes = lookupService.GetUserTypes(),
         Courts = lookupService.GetCourts(),
         JudgeLevels = lookupService.GetLookupsByCategory(LookupsCategories.JudgLevel),
         Prosecutions = lookupService.GetProsecutions(UserData.CourtID.HasValue ? UserData.CourtID.Value : IsAuthenticatied ? CurrentUser.CourtID : null).Select(pros => new Base.Views.vw_KeyValue
         {
             ID = pros.ID,
             Name = pros.Name
         }).ToList(),
     });
 }
        public ActionResult Edit(int id, [Bind(Prefix = "Edit.UserData")] vw_UserDataModel UserData, [Bind(Prefix = "Edit.PersonData")] UserPersonViewModel PersonData)
        {
            if (CurrentUser != null)
            {
                ViewData["SessionEnded"] = false;
                if (!ModelState.IsValid)
                {
                    KeyValuePair <String, ModelState> birthday = ModelState.FirstOrDefault(m => m.Key == "Edit.UserData.UserName");
                    string error = birthday.Value.Errors.Select(e => e.ErrorMessage).First().ToString();
                    if (error == "هذا الحقل مطلوب." || error == "هذا الحقل يجب ان يحتوى على حروف وأرقام فقط")
                    {
                        return(JavaScript("$(document).trigger('User:UserWrong3')"));
                    }

                    var Error = ModelState.Values;
                    return(CPartialView(GetUserViewModel(UserData, PersonData)));
                }
                using (var Transaction = DataContext.Database.BeginTransaction())
                {
                    var         PersonResultStatus = PersonService.EditPerson(PersonData.ToPersonData());
                    vw_UserData userData           = UserData.ToVwUserData();
                    userData.FullName = PersonData.Name;
                    userData.PersonID = PersonData.ID;
                    var UserResultStatus = UserService.UpdateUser(id, userData);
                    if (UserResultStatus == UserStatus.AddSuccess && PersonResultStatus == PersonStatus.SuccefullSave)
                    {
                        Transaction.Commit();
                        return(JavaScript("$(document).trigger('User:UpdateSuccefull')"));
                    }
                }
                return(CPartialView(GetUserViewModel(UserData, PersonData)));
            }
            else
            {
                ViewData["SessionEnded"] = true;
                return(PartialView());
            }
        }
        public async Task <ActionResult> Create(string submit, vw_UserDataModel UserData, UserPersonViewModel PersonData)
        {
            if (CurrentUser != null)
            {
                ViewData["SessionEnded"] = false;
                UserCreateViewModel viewModel = null;
                try
                {
                    using (var Transaction = DataContext.Database.BeginTransaction())
                    {
                        if (!ModelState.IsValid)
                        {
                            KeyValuePair <String, ModelState> UserName = ModelState.FirstOrDefault(m => m.Key == "UserData.UserName");
                            if (UserName.Value.Errors.Count() != 0)
                            {
                                string errorUserName = UserName.Value.Errors.Select(e => e.ErrorMessage).FirstOrDefault().ToString();
                                if (errorUserName == "أسم المستخدم موجود من قبل")
                                {
                                    return(JavaScript("$(document).trigger('User:UsernameExist2')"));
                                }
                            }

                            KeyValuePair <String, ModelState> PhoneNo = ModelState.FirstOrDefault(m => m.Key == "UserData.PhoneNo");
                            if (PhoneNo.Value.Errors.Count() != 0)
                            {
                                string errorPhoneNo = PhoneNo.Value.Errors.Select(e => e.ErrorMessage).FirstOrDefault().ToString();
                                if (errorPhoneNo == "رقم التليفون المحمول موجود من قبل")
                                {
                                    return(JavaScript("$(document).trigger('User:PhoneNoExist2')"));
                                }
                            }
                            // KeyValuePair<String, ModelState> PassportNo = ModelState.FirstOrDefault(m => m.Key == "PersonData.PersonData.PassportNo");
                            // string errorPassportNo = PassportNo.Value.Errors.Select(e => e.ErrorMessage).First().ToString();
                            //     return CPartialView(GetUserViewModel(UserData)).WithErrorMessages("إسم المستخدم موجود من قبل");
                            return(PartialView(GetUserViewModel(UserData)));
                        }
                        if (UserService.IsPassporeExist(PersonData.PassportNo, UserData.ID))
                        {
                            return(JavaScript("$(document).trigger('User:PassportNoExist2')"));
                        }

                        CleanUserData(UserData);
                        var vw_PersonData = GetPersonData(PersonData);

                        long PersonID = PersonData.ID;
                        if (vw_PersonData.ID == 0)
                        {
                            PersonService.AddPerson(vw_PersonData, out PersonID);
                        }
                        else
                        {
                            PersonService.EditPerson(vw_PersonData);
                        }
                        vw_PersonData.ID = PersonID;
                        var Result = await UserService.CreateUserAsync(vw_PersonData.ID, vw_PersonData.Name, UserData);

                        if (Result.Succeeded)
                        {
                            Transaction.Commit();
                            switch (submit)
                            {
                            case "حفظ و إضافة مستخدم جديد":
                                return(JavaScript("$(document).trigger('User:ReopenModel')"));


                            case " حفظ و غلق":
                                return(JavaScript("$(document).trigger('User:SaveSuccefull')"));
                            }
                        }
                        else
                        {
                            this.AddErrors(Result);
                        }
                    }
                }
                catch (DbEntityValidationException ex)
                {
                    DataContext.Database.CurrentTransaction.Rollback();
                    return(ErrorPage(ex));
                }

                catch (Exception ex)
                {
                    DataContext.Database.CurrentTransaction.Rollback();
                    return(ErrorPage(ex));
                }
                if (viewModel == null)
                {
                    viewModel = GetUserViewModel(UserData, PersonData);
                }

                return(PartialView(viewModel));
            }
            else
            {
                ViewData["SessionEnded"] = true;
                return(PartialView());
            }
        }