/// <summary>
 /// Deprecated Method for adding a new object to the PayCenters EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToPayCenters(PayCenter payCenter)
 {
     base.AddObject("PayCenters", payCenter);
 }
 /// <summary>
 /// Create a new PayCenter object.
 /// </summary>
 /// <param name="payCenterId">Initial value of the PayCenterId property.</param>
 /// <param name="iFE">Initial value of the IFE property.</param>
 /// <param name="comprobante">Initial value of the Comprobante property.</param>
 /// <param name="nombre">Initial value of the Nombre property.</param>
 /// <param name="representante">Initial value of the Representante property.</param>
 /// <param name="domicilio">Initial value of the Domicilio property.</param>
 /// <param name="celular">Initial value of the Celular property.</param>
 /// <param name="telefono">Initial value of the Telefono property.</param>
 /// <param name="email">Initial value of the Email property.</param>
 /// <param name="fechaIngreso">Initial value of the FechaIngreso property.</param>
 /// <param name="fechaCreacion">Initial value of the FechaCreacion property.</param>
 /// <param name="baja">Initial value of the Baja property.</param>
 /// <param name="userName">Initial value of the UserName property.</param>
 /// <param name="activo">Initial value of the Activo property.</param>
 public static PayCenter CreatePayCenter(global::System.Int32 payCenterId, global::System.String iFE, global::System.String comprobante, global::System.String nombre, global::System.String representante, global::System.String domicilio, global::System.String celular, global::System.String telefono, global::System.String email, global::System.DateTime fechaIngreso, global::System.DateTime fechaCreacion, global::System.Boolean baja, global::System.String userName, global::System.Boolean activo)
 {
     PayCenter payCenter = new PayCenter();
     payCenter.PayCenterId = payCenterId;
     payCenter.IFE = iFE;
     payCenter.Comprobante = comprobante;
     payCenter.Nombre = nombre;
     payCenter.Representante = representante;
     payCenter.Domicilio = domicilio;
     payCenter.Celular = celular;
     payCenter.Telefono = telefono;
     payCenter.Email = email;
     payCenter.FechaIngreso = fechaIngreso;
     payCenter.FechaCreacion = fechaCreacion;
     payCenter.Baja = baja;
     payCenter.UserName = userName;
     payCenter.Activo = activo;
     return payCenter;
 }
 /// <summary>
 /// Valida que esten capturados los campos necesarios para activar al paycenter, valida la entidad
 /// </summary>
 /// <param name="paycenter"></param>
 /// <returns></returns>
 private bool ValidaActivacion(PayCenter paycenter)
 {
     if (HttpContext.User.IsInRole(enumRoles.Administrator.ToString()))
     {
         return true;
     }
     if (string.IsNullOrWhiteSpace(paycenter.Nombre) || string.IsNullOrWhiteSpace(paycenter.Representante) ||
         string.IsNullOrWhiteSpace(paycenter.UserName) || string.IsNullOrWhiteSpace(paycenter.Telefono) ||
         string.IsNullOrWhiteSpace(paycenter.Email) || // || string.IsNullOrWhiteSpace(paycenterVM.Email2) ||
         string.IsNullOrWhiteSpace(paycenter.Domicilio) || string.IsNullOrWhiteSpace(paycenter.CP) ||
         string.IsNullOrWhiteSpace(paycenter.IFE) || string.IsNullOrWhiteSpace(paycenter.Comprobante)
         )
     {
         return false;
     }
     else
     {
         return true;
     }
 }
 private void EnviarCambioEstatusEmail(enumEstatusMovimiento EstatusMovimiento, Pago Pago, PayCenter PayCenter)
 {
     EmailHelper.Enviar(getMensajeCambioEstatus(EstatusMovimiento.ToString(), Pago), "El Pago de Servicio " + Pago.Ticket.Folio + " ha sido " + EstatusMovimiento.ToString(), PayCenter.Email);
 }
        public ActionResult Registrar(PayCenterVM paycenterVM)
        {
            Succeed = true;
            //Esto es para que no me marque requerido al validar cuando es actualización
            if (paycenterVM.PayCenterId > 0)
            {
                ModelState.Remove("Password");
                ModelState.Remove("RepeatPassword");
                ModelState.Remove("UserName");
            }

            if (ModelState.IsValid)
            {
                if (paycenterVM.IFE == null)
                {
                    paycenterVM.IFE = string.Empty;
                }
                if (paycenterVM.Comprobante == null)
                {
                    paycenterVM.Comprobante = string.Empty;
                }
                paycenterVM.ThumbnailIFE = paycenterVM.IFE.Replace("UploadImages", "UploadImages/Thumbnails");
                paycenterVM.ThumbnailComprobante = paycenterVM.Comprobante.Replace("UploadImages", "UploadImages/Thumbnails");

                //llenar los campos faltantes si estan nulos
                ValidaCapturaParcial(ref paycenterVM);

                #region "crear prospecto comentado"
                ////Crear prospecto o cargar el prospecto relacionado
                //if (paycenterVM.ProspectoId > 0)
                //{
                //      //ProspectosRepository repositoryProspecto = new ProspectosRepository();
                //      //Prospecto prospecto = repositoryProspecto.LoadById(paycenterVM.ProspectoId);
                //      //paycenterVM.Prospecto = prospecto;
                //}
                //else
                //{
                //    Prospecto prospecto = new Prospecto() {
                //        Baja=false,
                //        Celular=paycenterVM.Celular,
                //        Comentario=string.Empty,
                //        Email=paycenterVM.Email,
                //        Empresa=paycenterVM.Empresa,
                //        FechaCreacion=paycenterVM.FechaCreacion,
                //        Nombre=paycenterVM.Nombre,
                //        Telefono=paycenterVM.Telefono,
                //        ProspectoId=0
                //    };
                //    paycenterVM.Prospecto = prospecto;
                //}
                #endregion

                //Validar si existe el usuario si el paycenter está siendo editado y actualizarlo
                AspNetMembershipProviderWrapper membership = new AspNetMembershipProviderWrapper();
                if (paycenterVM.PayCenterId > 0 && !string.IsNullOrWhiteSpace(paycenterVM.UserName)) //&& !string.IsNullOrWhiteSpace(paycenterVM.Password))
                {
                    try
                    {
                        MembershipUser usuario = membership.Get(paycenterVM.UserName);

                        if (usuario != null)
                        {
                            if (!usuario.IsApproved)
                            {
                                usuario.Email = paycenterVM.Email;
                                membership.Update(usuario);
                                //membership.ChangePassword(usuario, paycenterVM.Password);
                            }
                            else
                            {
                                paycenterVM.Activo = true;
                                Succeed = false;
                                AddValidationMessage(enumMessageType.UnhandledException, "El PayCenter ya se encuentra aprobado y activo, no es posible ser modificado por el Prospecto. Por favor, ingresa al sistema con tu usuario y contraseña.");
                            }
                        }
                        else
                        {
                            Succeed = false;
                            AddValidationMessage(enumMessageType.UnhandledException, "No se encontró el usuario del PayCenter.");
                        }
                    }
                    catch (Exception ex)
                    {
                        Succeed = false;
                        AddValidationMessage(enumMessageType.UnhandledException, "Se ha producido un error al actualizar el usuario del PayCenter. " + ex.Message);
                    }
                }
                else if (!(string.IsNullOrWhiteSpace(paycenterVM.UserName) || string.IsNullOrWhiteSpace(paycenterVM.Password)))
                {
                    try
                    {
                        var user = membership.Create(paycenterVM.UserName, paycenterVM.Password, paycenterVM.Email, null, null, false);
                        AspNetRoleProviderWrapper membershipRole = new AspNetRoleProviderWrapper();
                        membershipRole.AddToRole(user, "paycenter");
                    }
                    catch (Exception ex)
                    {
                        Succeed = false;
                        AddValidationMessage(enumMessageType.UnhandledException, "Se ha producido un error al crear el usuario del PayCenter. " + ex.Message);
                    }
                }

                if (Succeed)
                {
                    PayCenter paycenter;
                    bool modificando = paycenterVM.PayCenterId > 0;
                    if (paycenterVM.PayCenterId > 0)
                    {
                        paycenter = repository.LoadById(paycenterVM.PayCenterId);
                        paycenterVM.MaximoAFinanciar = paycenter.Parametros != null && paycenter.Parametros.MaximoAFinanciar != null ? paycenter.Parametros.MaximoAFinanciar.ToString() : string.Empty;
                        Mapper.Map(paycenterVM, paycenter);
                    }
                    else
                    {
                        paycenter = new PayCenter();
                        Mapper.Map(paycenterVM, paycenter);
                        if (paycenterVM.PayCenterPadreId == 0)
                        {
                            paycenter.PayCenterPadreId = null;
                            paycenter.PayCenterPadre = null;
                        }
                        repository.Add(paycenter);
                    }
                    Succeed = repository.Save();
                    if (!Succeed)
                    {
                        var mensaje = modificando ? "crear" : "actualizar";
                        AddValidationMessage(enumMessageType.UnhandledException, "No fue posible " + mensaje + " el paycenter. Favor de intentar más tarde o comunicarse con servicio a cliente.");
                        if (!modificando)
                        {
                            try
                            {
                                //Elimino el usuario en caso de haber fallado la creación del PayCenter
                                var user = Membership.GetUser(paycenter.UserName);
                                if (user != null)
                                {
                                    membership.Delete(user);
                                }
                            }
                            catch (Exception ex)
                            {
                                Succeed = false;
                                AddValidationMessage(enumMessageType.Notification, "El usuario creado no pudo ser eliminado");
                            }
                        }
                    }
                    else
                    {
                        paycenterVM.Activo = true; //Esto es sólo para que se deshabiliten los campos
                        AddValidationMessage(enumMessageType.Succeed, "El PayCenter se ha guardado con éxito. Si deseas modificar o terminar de completar tu información deberás acceder mediante el enlace que recibiste en tu correo o contactar al equipo de Evoluciona Móvil. En breve tu registro como PayCenter quedará activado.");
                    }
                }
            }
            return View(paycenterVM);
        }