public ActionResult SaveUser(UserModel model) {
            try {
                User user = new User();
                user.id = model.id;
                user.CustomerId = SessionData.customer.id;
                user.FirstName = model.FirstName;
                user.LastName = model.LastName;
                user.WorkPhone = model.WorkPhone.FormatPhone();
                user.MobilePhone = model.MobilePhone.FormatPhone();
                user.Password = model.Password;
                user.Hash = model.LastName.ToHashMD5();
                user.Active = (model.Active == Common.Status.Active);
                user.Type = (Int32)model.Type;
                user.Email = model.Email;
                user.ImageUrl = model.ImageUrl;
                if (model.Image != null) {
                    if (user.id == 0)
                        user.ImageUrl = Path.GetExtension(model.Image.FileName);
                    else
                        user.ImageUrl = String.Format("{0}{1}", model.id, Path.GetExtension(model.Image.FileName));
                }
                if (user.id == 0) {
                    EmailHelper.SendEmailConfirmation(this.ControllerContext, user);
                }

                Int32 result = _userService.SaveUser(user);
                if (result == 0)
                    return RedirectToAction("Index", "Error");

                String fileName = (model.Image == null ? model.ImageUrl : model.Image.FileName);
                String path = Path.Combine(Server.MapPath("~/Images/Menus/"), SessionData.customer.id.ToString(), "users", String.Format("{0}{1}", result, Path.GetExtension(fileName)));
                if (model.Image == null && model.ImageUrl == null) {
                    if (System.IO.File.Exists(path)) {
                        System.IO.File.Delete(path);
                    }
                }
                else if (model.Image != null) {
                    model.Image.SaveAs(path);
                }

                if (model.Referer == "Form") {
                    return RedirectToAction("Index", "Login");
                }
                else {
                    return RedirectToAction("Index", "Users", new { id = user.CustomerId });
                }
            }
            catch (Exception ex) {
                base.Log(ex);
            }
            finally {
            }

            return null;
        }
        private UserModel GetModel(Int32? id) {
            UserModel model;
            User user;

            try {
                //set for new or existing user
                model = new UserModel();
                model.id = id.HasValue ? id.Value : 0;

                model.Active = Common.Status.Active;
                if (id.HasValue) {
                    user = _userService.GetUser((Int32)id.Value);
                    if (user != null) {
                        model.id = user.id;
                        model.CustomerId = user.CustomerId;
                        model.FirstName = user.FirstName;
                        model.LastName = user.LastName;
                        model.WorkPhone = user.WorkPhone;
                        model.MobilePhone = user.MobilePhone;
                        model.Email = user.Email;
                        model.Password = user.Password;
                        model.Active = user.Active ? Common.Status.Active : Common.Status.NotActive;
                        model.Type = (Common.UserType)user.Type;
                        model.Hash = user.Hash;
                        model.ImageUrl = user.ImageUrl;
                    }
                }
                return model;
            }
            catch (Exception ex) {
                base.Log(ex);
            }
            finally {
            }

            return null;
        }