/// <summary> /// Éste metodo valida si el cliente existe y retorna la entidad representando el cliente /// </summary> /// <param name="userName"> /// Nombre de usuario del cliente /// </param> /// <param name="password"> /// Clave del cliente /// </param> /// <returns>La entidad del Cliente</returns> public static CustomerEntity ValidateAndGetCustomer(string userName, string password) { if (String.IsNullOrEmpty(userName) || String.IsNullOrEmpty(password)) { throw new ArgumentException( global::PresentationLayer.GeneralResources.UserNameEmpty); } Collection <CustomerEntity> customers = new Collection <CustomerEntity>(); SessionManagerClient sessionManagerClient = new SessionManagerClient(SessionManagerClient.CreateDefaultBinding(), new EndpointAddress(UtnEmall.Client.SmartClientLayer.Connection.ServerUri + "SessionManager")); string session = sessionManagerClient.ValidateCustomer(userName, Utilities.CalculateHashString(password)); CustomerClient customerClient = new CustomerClient(CustomerClient.CreateDefaultBinding(), new EndpointAddress(UtnEmall.Client.SmartClientLayer.Connection.ServerUri + "Customer")); customers = customerClient.GetCustomerWhereEqual(CustomerEntity.DBUserName, userName, true, session); if (customers.Count == 0) { throw new UtnEmallBusinessLogicException( global::PresentationLayer.GeneralResources.LoginFailedUserIncorrect); } string passwordHash = Utilities.CalculateHashString(password); CustomerEntity customer = customers[0]; if (String.Compare(customer.Password, passwordHash, StringComparison.Ordinal) != 0) { throw new UtnEmallBusinessLogicException( global::PresentationLayer.GeneralResources.LoginFailedPasswordIncorrect); } return(customer); }