Exemplo n.º 1
0
        public async void Run_SearchCustomerTest()
        {
            ShowTestOnTerminal("SearchCustomer");

            UpdateCustomerRequest setupRequest = new UpdateCustomerRequest
            {
                Customer = new Customer
                {
                    FirstName    = "Test",
                    LastName     = "Customer",
                    CompanyName  = "Test Company",
                    EmailAddress = "*****@*****.**",
                    SmsNumber    = "(123) 123-1234",
                },
            };

            output.WriteLine("Setup request: {0}", setupRequest);

            CustomerResponse setupResponse = await blockchyp.UpdateCustomerAsync(setupRequest);

            output.WriteLine("Setup Response: {0}", setupResponse);

            CustomerSearchRequest request = new CustomerSearchRequest
            {
                Query = "123123",
            };

            output.WriteLine("Request: {0}", request);

            CustomerSearchResponse response = await blockchyp.CustomerSearchAsync(request);

            output.WriteLine("Response: {0}", response);

            Assert.True(response.Success, "response.Success");
        }
Exemplo n.º 2
0
        public IList <Customer> FindCustomers(CustomerSearchRequest model)
        {
            if (model.Name != null)
            {
                model.Name = "%" + model.Name + "%";
            }

            using (var conn = new SqlConnection(GetConnectionString()))
            {
                return(conn.Query <Customer>(@"SELECT c.[Id]
                                                  ,c.[Name]
                                                  ,c.[Phone]
                                                  ,g.Name as Gender
                                                  ,ci.Name as [City]
                                                  ,r.Name as [Region]
                                                  ,c.[LastPurchase]
                                                  ,cl.Name as [Classification]
                                                  , u.Login as [Seller]
                                              FROM [Customer] c 
                                              inner join Gender g on g.id = c.genderid
                                              inner join City ci on ci.id = c.cityid
                                              inner join Region r on r.id = c.regionid
                                              inner join Classification cl on cl.id = c.classificationid
                                              inner join UserSys u on u.id = c.userid
                                            where (@Name is null or c.Name like @Name) and
                                                   (@GenderId is null or GenderId = @GenderId) and
                                                   (@CityId is null or CityId = @CityId) and
                                                   (@RegionId is null or c.RegionId = @RegionId) and
                                                   (@ClassificationId is null or ClassificationId = @ClassificationId) and
                                                   (@SellerId is null or UserId = @SellerId) and
                                                   (@LastPurchase is null or LastPurchase >= @LastPurchase) and
                                                   (@Until is null or LastPurchase <= @Until)",
                                             model).ToList());
            }
        }
        /// <summary>
        ///     Display a student user's subscription information, or offer a number of membership plans
        /// </summary>
        /// <remarks>
        ///     Create a new Subscription model
        ///     Get the current user's details from the database
        ///     Check to see if the user has a subscription.
        ///     If the user is subscribed,
        ///          Checks the financial gateway for the matching customer record as the user.
        ///          When the match is found, add the relevant subscription information to the data model.
        ///     Send the model along with the View
        /// </remarks>
        /// <returns>
        ///     The details of the student's subscription if the student has a membership.
        ///     The list of membership plans available if not subscribed.
        /// </returns>
        // GET: Subscription
        public ActionResult Index()
        {
            SubscriptionViewModel model = new SubscriptionViewModel();

            using (_db)
            {
                ApplicationUser user = _db.Users.First(u => u.UserName.Equals(User.Identity.Name));

                //Ternary operator to evaluate if a user has a subscription
                model.IsSubscribed = (user.MemberLevel != null);
                if (model.IsSubscribed)
                {
                    model.Username = user.FirstName + " " + user.LastName;
                    var request = new CustomerSearchRequest().Email.Is(User.Identity.Name);
                    ResourceCollection <Customer> collection = PaymentGateways.Gateway.Customer.Search(request);
                    if (collection.Ids.Count != 0)
                    {
                        foreach (var entry in collection.FirstItem.CreditCards)
                        {
                            foreach (var sub in entry.Subscriptions)
                            {
                                if (sub.Status == SubscriptionStatus.ACTIVE)
                                {
                                    model.LastPaymentDate = sub.PaidThroughDate.Value.Date;
                                    model.NextDueDate     = sub.NextBillingDate.Value.Date;
                                    model.SubscriptionId  = sub.Id;
                                }
                            }
                        }
                    }
                }
            }
            return(View(model));
        }
        private async void btnClick_Click(object sender, EventArgs e)
        {
            try
            {
                APIService.Username = txtUsername.Text;
                APIService.Password = txtPassword.Text;

                if (string.IsNullOrEmpty(txtUsername.Text) || string.IsNullOrEmpty(txtPassword.Text))
                {
                    MessageBox.Show("All fields are required! Try again.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                var request = new CustomerSearchRequest {
                    Username = txtUsername.Text
                };
                var customer = await _apiService.Get <List <Data.Model.Customer> >(request);

                if (customer.Count == 0)
                {
                    MessageBox.Show("Customer with this credentials don't exist! Try again.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                else
                {
                    frmIndex frm = new frmIndex();
                    frm.Show();
                    this.Hide();
                }
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message, "Wrong username or password", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemplo n.º 5
0
        public static List <CustomerModel> CustomerListExport(string state, string site, bool isProduction)
        {
            BusinessFlowContext.SetContext(site, isProduction);
            var customerList   = new List <CustomerModel>();
            var customerSearch = new CustomerSearchRequest();
            var stateCriterion = new AdditionalCriterion();

            stateCriterion.CriterionID   = "customer_region_cd";
            stateCriterion.CriterionType = AdditionalCriterionType.Database;
            stateCriterion.Parameters    = new string[] { state };

            customerSearch.MaxRows = 50000;
            customerSearch.Filter  = CustomerSearchFilter.Active;
            customerSearch.AddCriterion(stateCriterion);
            customerSearch.AddCriterion("lu_dt", AdditionalColumnType.Database, DateTime.Today.AddYears(-3).ToShortDateString(), AdditionalCriterionCondition.GreaterThan);

            var customers = BusinessFlow.WebServices.Customer.Search(customerSearch);

            if (customers.Customers.Rows.Count == 50000)
            {
                throw new NotImplementedException(state + " is just TOO BIG!!");
            }

            foreach (dsCustomerList.CustomersRow customer in customers.Customers)
            {
                customerList.Add(SafeCreate(customer));
            }

            return(customerList);
        }
        private string GetCustomerId(string email)
        {
            var query = new CustomerSearchRequest();

            query.Email.Is(email);
            return(this.gateway.Value.Customer.Search(query).OfType <Customer>().FirstOrDefault()?.Id);
        }
Exemplo n.º 7
0
        public async Task <IActionResult> Index()
        {
            CheckoutViewModel model = new CheckoutViewModel();

            if (User.Identity.IsAuthenticated)
            {
                var user = await _context.Users
                           .FirstOrDefaultAsync(
                    x => x.UserName == User.Identity.Name);

                model.ContactEmail = user.Email;
                model.FirstName    = user.FirstName;
                model.LastName     = user.LastName;

                CustomerSearchRequest customerSearchRequest = new CustomerSearchRequest();
                customerSearchRequest.Email.Is(User.Identity.Name);

                var customers = await _braintreeGateway.Customer.SearchAsync(customerSearchRequest);

                if (customers.Ids.Any())
                {
                    Customer customer = customers.FirstItem;

                    model.CreditCards = customer.CreditCards;
                }
            }


            return(View(model));
        }
Exemplo n.º 8
0
        public ActionResult Booking(FormCollection form)
        {
            TicketViewModel model    = new TicketViewModel();
            List <Seat>     seats    = new List <Seat>();
            var             eventId  = form["eventID"];
            int             eId      = int.Parse(eventId);
            var             seatList = form["seatList"].Split(',');

            TempData["seatList"] = seatList;

            using (_db)
            {
                LiveEvent newEvent = _db.LiveEvents
                                     .Where(ev => ev.EventId == eId)
                                     .Include(ev => ev.Venue)
                                     .Include(ev => ev.Seats)
                                     .FirstOrDefault();
                TempData["Event"] = newEvent;

                foreach (string seatNo in seatList)
                {
                    if (newEvent != null)
                    {
                        Seat seat = (from s in newEvent.Seats
                                     where s.SeatNumber == seatNo
                                     select s).First();

                        seats.Add(seat);
                        seat.Events.Add(newEvent);
                        seat.Status = Seat.SeatBookingStatus.Reserved;
                    }
                    model.Event = newEvent;
                    model.Seats = seats;
                    _db.SaveChanges();
                }
            }

            //Payment token generation
            var customerRequest = new CustomerSearchRequest().Email.Is(User.Identity.Name);
            ResourceCollection <Customer> collection = PaymentGateways.Gateway.Customer.Search(customerRequest);
            string clientToken;

            if (collection.Ids.Count != 0)
            {
                string custId = collection.FirstItem.Id;
                clientToken = PaymentGateways.Gateway.ClientToken.generate(
                    new ClientTokenRequest
                {
                    CustomerId = custId
                }
                    );
            }
            else
            {
                clientToken = PaymentGateways.Gateway.ClientToken.generate();
            }
            ViewBag.ClientToken = clientToken;

            return(View(model));
        }
Exemplo n.º 9
0
        public void Search_OnCreatedAt()
        {
            CustomerRequest request = new CustomerRequest();

            Customer customer = gateway.Customer.Create(request).Target;

            DateTime createdAt         = customer.CreatedAt.Value;
            DateTime threeHoursEarlier = createdAt.AddHours(-3);
            DateTime oneHourEarlier    = createdAt.AddHours(-1);
            DateTime oneHourLater      = createdAt.AddHours(1);

            CustomerSearchRequest searchRequest = new CustomerSearchRequest().
                                                  Id.Is(customer.Id).
                                                  CreatedAt.Between(oneHourEarlier, oneHourLater);

            Assert.AreEqual(1, gateway.Customer.Search(searchRequest).MaximumCount);

            searchRequest = new CustomerSearchRequest().
                            Id.Is(customer.Id).
                            CreatedAt.GreaterThanOrEqualTo(oneHourEarlier);

            Assert.AreEqual(1, gateway.Customer.Search(searchRequest).MaximumCount);

            searchRequest = new CustomerSearchRequest().
                            Id.Is(customer.Id).
                            CreatedAt.LessThanOrEqualTo(oneHourLater);

            Assert.AreEqual(1, gateway.Customer.Search(searchRequest).MaximumCount);

            searchRequest = new CustomerSearchRequest().
                            Id.Is(customer.Id).
                            CreatedAt.Between(threeHoursEarlier, oneHourEarlier);

            Assert.AreEqual(0, gateway.Customer.Search(searchRequest).MaximumCount);
        }
Exemplo n.º 10
0
        public static List <CustomerModel> CustomerListExport(IEnumerable <int> zipCodes, string site, bool isProduction)
        {
            BusinessFlowContext.SetContext(site, isProduction);
            var customerList   = new List <CustomerModel>();
            var customerSearch = new CustomerSearchRequest();
            var stateCriterion = new AdditionalCriterion();

            stateCriterion.CriterionID   = "customer_postal_code";
            stateCriterion.CriterionType = AdditionalCriterionType.Database;


            customerSearch.MaxRows = 20000;
            customerSearch.Filter  = CustomerSearchFilter.Active;
            customerSearch.AddCriterion(stateCriterion);
            customerSearch.AddCriterion("lu_dt", AdditionalColumnType.Database, DateTime.Today.AddYears(-4).ToShortDateString(), AdditionalCriterionCondition.GreaterThan);

            for (var i = 0; i < zipCodes.Count(); i += 10)
            {
                stateCriterion.Parameters = zipCodes.Skip(i).Take(10).Select(z => z.ToString()).ToArray();
                var customers = BusinessFlow.WebServices.Customer.Search(customerSearch);

                foreach (dsCustomerList.CustomersRow customer in customers.Customers)
                {
                    customerList.Add(SafeCreate(customer));
                }
            }

            return(customerList);
        }
Exemplo n.º 11
0
        public HttpResponseMessage search(CustomerSearchRequest requestInfo)
        {
            var orgs   = _IOrgcustService.GetCustomersByFilter(requestInfo);
            var result = PlatformMappingHelper.Map <IList <OrgCust>, IList <CustomerDTO> >(orgs.ToList()).ToList();

            if (result == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            return(Request.CreateResponse <IEnumerable <CustomerDTO> >(HttpStatusCode.OK, result));
        }
Exemplo n.º 12
0
        public List <CustomerDTO> SearchCustomer(CustomerSearchRequest request)
        {
            var customers = _customerRepository.All.Where(x => !x.IsDeleted && x.DeletedBy == null);

            if (!string.IsNullOrWhiteSpace(request.SearchText))
            {
                customers = customers.Where(c => c.FullName.Contains(request.SearchText));
            }

            return(DomainDTOMapper.ToCustomerDTOs(customers.ToList()));
        }
Exemplo n.º 13
0
        public ActionResult Index(CustomerSearchRequest request)
        {
            CustomerViewModel viewModel = new CustomerViewModel();

            var cList = customerService.FindCustomers(request);

            viewModel.data            = cList.Customers;
            viewModel.recordsTotal    = cList.TotalCount;
            viewModel.recordsFiltered = cList.TotalCount;
            return(Json(viewModel, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 14
0
        public HttpResponseMessage MetricsByDocType(CustomerSearchRequest requestInfo)
        {
            var docTypeList = _IOrgdoctypService.GetOrgdoctyps().Where(p => p.OrgId == requestInfo.orgId).Select(s => s.Id).ToList();

            var result = _IWkflowinstanceService.GetWkflowinstances().Where(p => p.WkflowDefId == 4 && p.OrgId == requestInfo.orgId && (requestInfo.StartDate == null || p.CreateDate > requestInfo.StartDate) && (requestInfo.EndDate == null || p.CreateDate > requestInfo.EndDate)).Where(q => docTypeList.Contains((int)q.WkflowInstanceDocs.FirstOrDefault().Doc.OrgDocTypId)).GroupBy(g => g.WkflowInstanceDocs.FirstOrDefault().Doc.OrgDocTyp.Descript).Select(s => new { Name = s.Key, Value = s.Count() });

            if (result == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            return(Request.CreateResponse <IEnumerable <object> >(HttpStatusCode.OK, result));
        }
Exemplo n.º 15
0
        /// <summary>
        /// Searches for customers.
        /// </summary>
        /// <param name="request">A CustomerSearchRequest instance containing the search criteria.</param>
        /// <returns>A CustomerSearchResult instance containing the results of the customer search.</returns>
        /// <exception cref="ApiException">Thrown when a <see cref="Fault"/> document is returned.</exception>
        /// <remarks>
        /// The search can be configured using a simple query language, which provides most common filter and operator functionality.
        /// The identifier for an attribute to use in a query condition is always the ID of the attribute as defined in the type definition.
        /// For custom defined attributes the prefix "c_" is required in the search term (e.g. c_color = {1}), while for system attributes no prefix is used (e.g. name = {4}).
        /// </remarks>
        public CustomerSearchResult Search(CustomerSearchRequest request)
        {
            var authorization = GetOcapiAuthorizationToken();

            var searchUrl = $"{Configuration.DataApiConfiguration.Url}{BASE_PATH}";

            var headers = GetWebHeaders(searchUrl, authorization);

            var searchResponse = ServiceManager.HttpPost <CustomerSearchResult>(searchUrl, headers, GetBytes(request));

            return(searchResponse);
        }
Exemplo n.º 16
0
        private async void btnShow_Click(object sender, EventArgs e)
        {
            var search = new CustomerSearchRequest()
            {
                Search = txtSearch.Text
            };


            //calling API
            var result = await _apiService.Get <List <Model.Customer> >(search);

            dgvCustomers.DataSource = result;
        }
Exemplo n.º 17
0
        public async Task RunAsync(string[] args)
        {
            await Parser.Default
            .ParseArguments <CustomerSearchApplicationOption>(args)
            .WithParsedAsync(async option =>
            {
                var searchRequest = new CustomerSearchRequest(option.Id);
                var result        = await _service.SearchByIdAsync(searchRequest);
                HandleSearchResult(result);

                // _consoleWriter.WriteLine($"The Customer Id was {option.Id}");
                //return Task.CompletedTask;
            });
        }
Exemplo n.º 18
0
        public async Task <IActionResult> Index([FromBody] CustomerSearchRequest request)
        {
            try
            {
                var response = await _customerAppService.Search(request);

                return(Json(response));
            }
            catch (Exception e)
            {
                _logger.LogError(e, Common.Common.GetMethodName(), request);
                throw;
            }
        }
Exemplo n.º 19
0
        public void Search_OnPayPalAccountEmail()
        {
            var request = new CustomerRequest
            {
                PaymentMethodNonce = Nonce.PayPalFuturePayment
            };

            var customer = gateway.Customer.Create(request).Target;

            var search = new CustomerSearchRequest().
                         Id.Is(customer.Id).
                         PayPalAccountEmail.Is(customer.PayPalAccounts[0].Email);

            Assert.AreEqual(1, gateway.Customer.Search(search).MaximumCount);
        }
        public async Task Filtiranje()
        {
            if (SelectedType != null)
            {
                CustomerSearchRequest request = new CustomerSearchRequest();
                request.CustomerTypeId = SelectedType.CustomerTypeId;

                var lista = await _serviceCustomer.Get <List <Data.Model.Customer> >(request);

                customerList.Clear();
                foreach (var item in lista)
                {
                    customerList.Add(item);
                }
            }
        }
        public List <Data.Customer> Get(CustomerSearchRequest request)
        {
            var query = _context.Customer.Include(x => x.City).AsQueryable();

            if (!string.IsNullOrWhiteSpace(request.FirstName) || !string.IsNullOrWhiteSpace(request.LastName))
            {
                query = query.Where(x => x.FirstName.StartsWith(request.FirstName) || x.LastName.StartsWith(request.LastName));
            }

            if (!string.IsNullOrWhiteSpace(request.CityName))
            {
                query = query.Where(x => x.City.CityName.StartsWith(request.CityName));
            }
            query = query.OrderBy(x => x.FirstName);

            return(_mapper.Map <List <Data.Customer> >(query.ToList()));
        }
Exemplo n.º 22
0
        public async Task <CustomerItemsResponse> Get(CustomerSearchRequest request)
        {
            var url = "customers/";

            url = url.AppendParameter("id", request.id);
            url = url.AppendParameter("skip", request.skip);
            url = url.AppendParameter("limit", request.limit);
            url = url.AppendParameter("search", request.search);
            url = url.AppendParameter("sortkey", request.sortkey);
            url = url.AppendParameter("sortdirection", request.sortdirection);
            url = url.AppendParameter("gateway_id", request.gateway_id);
            url = url.AppendParameter("archived", request.archived);
            url = url.AppendParameter("reference", request.reference);
            url = url.AppendParameter("payment_source_id", request.payment_source_id);

            return(await _serviceHelper.Get <CustomerItemsResponse>(url, overrideConfigSecretKey : _overrideConfigSecretKey));
        }
Exemplo n.º 23
0
        public async Task <List <Model.Customer> > Get(CustomerSearchRequest request)
        {
            var query = _context.Customers.AsQueryable();

            if (!string.IsNullOrWhiteSpace(request?.Search))
            {
                query = query.Where(x => x.FirstName.Contains(request.Search) ||
                                    x.LastName.Contains(request.Search) ||
                                    x.City.Contains(request.Search) ||
                                    x.Adress.Contains(request.Search));
            }



            var list = await query.ToListAsync();

            return(await Task.FromResult(_mapper.Map <List <Model.Customer> >(list)));
        }
Exemplo n.º 24
0
        public async Task <IActionResult> Index(CustomerSearchRequest searchRequest)
        {
            try
            {
                var model = await _customerService.GetAllCustomersAsync();

                if (searchRequest != null)
                {
                    model = await _customerService.GetCustomerBySearchTermsAsync(searchRequest);
                }

                return(View(model));
            }
            catch (ArgumentNullException)
            {
                var emptyList = new List <CustomerResponse>();
                return(View(emptyList));
            }
        }
Exemplo n.º 25
0
        public static List <CustomerModel> CustomerPricePointExport(string priceLevelCode, string site, bool isProduction)
        {
            var customerList   = new List <CustomerModel>();
            var customerSearch = new CustomerSearchRequest();
            var priceLevelGuid = GetPricePointGuid(priceLevelCode);

            customerSearch.AddCriterion("customer_closed", AdditionalColumnType.Database, "0");
            customerSearch.AddCriterion("customer_suspended", AdditionalColumnType.Database, "0");
            customerSearch.AddCriterion("item_price_level_guid", AdditionalColumnType.Database, priceLevelGuid.ToString());
            customerSearch.MaxRows = 10000;

            var customers = BusinessFlow.WebServices.Customer.Search(customerSearch);

            foreach (dsCustomerList.CustomersRow customer in customers.Customers)
            {
                customerList.Add(SafeCreate(customer, priceLevelCode));
            }

            return(customerList);
        }
Exemplo n.º 26
0
        private async void btnSearch_Click(object sender, EventArgs e)
        {
            var search = new CustomerSearchRequest()
            {
                FirstName = txtCustomer.Text,
                LastName  = txtLastName.Text,
                Phone     = txtPhoneNumber.Text,
                Email     = txtEmail.Text
            };

            var result = await _apiService.Get <List <Data.Model.Customer> >(search);

            dgvAllCustomers.AutoGenerateColumns = false;
            dgvAllCustomers.DataSource          = result;

            if (result.Count == 0)
            {
                MessageBox.Show("There are no results for this search", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
Exemplo n.º 27
0
        public static List <CustomerModel> CustomerPointInTimeExport(DateTime since, string site, bool isProduction)
        {
            BusinessFlowContext.SetContext(site, isProduction);
            var customerList   = new List <CustomerModel>();
            var customerSearch = new CustomerSearchRequest();

            customerSearch.AddCriterion("customer_closed", AdditionalColumnType.Database, "0");
            customerSearch.AddCriterion("customer_suspended", AdditionalColumnType.Database, "0");
            customerSearch.AddCriterion("lu_dt", AdditionalColumnType.Database, since.ToShortDateString(), AdditionalCriterionCondition.GreaterThan);
            customerSearch.MaxRows = 10000;

            var customers = BusinessFlow.WebServices.Customer.Search(customerSearch);

            foreach (dsCustomerList.CustomersRow customer in customers.Customers)
            {
                customerList.Add(SafeCreate(customer));
            }

            return(customerList);
        }
Exemplo n.º 28
0
        private void Load(CustomerSearchRequest model)
        {
            var currentUser = db.GetByEmail(HttpContext.User.Identity.Name);

            if (currentUser.IsAdmin == false)
            {
                model.SellerId = currentUser.Id;
            }

            var customers = db.FindCustomers(model);

            PopulateCityDropDownList(model.CityId);
            PopulateGenderDropDownList(model.GenderId);
            PopulateSellerDropDownList(model.SellerId);
            PopulateRegionDropDownList(model.RegionId);
            PopulateClassificationDropDownList(model.ClassificationId);

            ViewBag.Customers = customers;
            ViewBag.IsAdmin   = currentUser.IsAdmin;
        }
Exemplo n.º 29
0
 public List <CustomerListResponse> SearchCustomer(CustomerSearchRequest searchRequest)
 {
     using (DataAccess dataAccess = new DataAccess())
     {
         var CustomerList = from customer in dataAccess.Customers
                            where (customer.StatusID == true && (customer.Name.StartsWith(searchRequest.query) || customer.Surname.StartsWith(searchRequest.query) || (customer.Name + " " + customer.Surname).StartsWith(searchRequest.query)))
                            join city in dataAccess.Cities
                            on customer.CityID equals city.CityID
                            select new CustomerListResponse
         {
             CustomerID = customer.CustomerID,
             Name       = customer.Name,
             Surname    = customer.Surname,
             Email      = customer.Email,
             Password   = customer.Password,
             CityName   = city.CityName.ToUpper(),
             Photo      = customer.Photo
         };
         return(CustomerList.ToList());
     }
 }
        public ActionResult SendPayment(int?paymentId)
        {
            if (paymentId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Payment payment = _db.Payments
                              .Where(p => p.PaymentId == paymentId)
                              .Include(u => u.User)
                              .Single();

            if (payment == null)
            {
                return(HttpNotFound());
            }

            //Generate payment token
            var customerRequest = new CustomerSearchRequest().Email.Is(User.Identity.Name);
            ResourceCollection <Customer> collection = PaymentGateways.Gateway.Customer.Search(customerRequest);
            string clientToken;

            if (collection.Ids.Count != 0)
            {
                string custId = collection.FirstItem.Id;
                clientToken = PaymentGateways.Gateway.ClientToken.generate(
                    new ClientTokenRequest
                {
                    CustomerId = custId
                }
                    );
            }
            else
            {
                clientToken = PaymentGateways.Gateway.ClientToken.generate();
            }
            ViewBag.ClientToken = clientToken;
            ViewBag.Message     = TempData["message"];

            return(View(payment));
        }
Exemplo n.º 31
0
        public void Search_OnCreatedAt()
        {
            CustomerRequest request = new CustomerRequest();

            Customer customer = gateway.Customer.Create(request).Target;

            DateTime createdAt = customer.CreatedAt.Value;
            DateTime threeHoursEarlier = createdAt.AddHours(-3);
            DateTime oneHourEarlier = createdAt.AddHours(-1);
            DateTime oneHourLater = createdAt.AddHours(1);

            CustomerSearchRequest searchRequest = new CustomerSearchRequest().
                Id.Is(customer.Id).
                CreatedAt.Between(oneHourEarlier, oneHourLater);

            Assert.AreEqual(1, gateway.Customer.Search(searchRequest).MaximumCount);

            searchRequest = new CustomerSearchRequest().
                Id.Is(customer.Id).
                CreatedAt.GreaterThanOrEqualTo(oneHourEarlier);

            Assert.AreEqual(1, gateway.Customer.Search(searchRequest).MaximumCount);

            searchRequest = new CustomerSearchRequest().
                Id.Is(customer.Id).
                CreatedAt.LessThanOrEqualTo(oneHourLater);

            Assert.AreEqual(1, gateway.Customer.Search(searchRequest).MaximumCount);

            searchRequest = new CustomerSearchRequest().
                Id.Is(customer.Id).
                CreatedAt.Between(threeHoursEarlier, oneHourEarlier);

            Assert.AreEqual(0, gateway.Customer.Search(searchRequest).MaximumCount);
        }
Exemplo n.º 32
0
        public void Search_OnAllTextFields()
        {
            string creditCardToken = string.Format("cc{0}", new Random().Next(1000000).ToString());

            CustomerRequest request = new CustomerRequest
            {
                Company = "Braintree",
                Email = "*****@*****.**",
                Fax = "5551231234",
                FirstName = "Tom",
                LastName = "Smith",
                Phone = "5551231235",
                Website = "http://example.com",
                CreditCard = new CreditCardRequest
                {
                    CardholderName = "Tim Toole",
                    Number = "4111111111111111",
                    ExpirationDate = "05/2012",
                    Token = creditCardToken,
                    BillingAddress = new CreditCardAddressRequest
                    {
                        Company = "Braintree",
                        CountryName = "United States of America",
                        ExtendedAddress = "Suite 123",
                        FirstName = "Drew",
                        LastName = "Michaelson",
                        Locality = "Chicago",
                        PostalCode = "12345",
                        Region = "IL",
                        StreetAddress = "123 Main St"
                    }
                }
            };

            Customer customer = gateway.Customer.Create(request).Target;
            customer = gateway.Customer.Find(customer.Id);

            CustomerSearchRequest searchRequest = new CustomerSearchRequest().
                Id.Is(customer.Id).
                FirstName.Is("Tom").
                LastName.Is("Smith").
                Company.Is("Braintree").
                Email.Is("*****@*****.**").
                Website.Is("http://example.com").
                Fax.Is("5551231234").
                Phone.Is("5551231235").
                AddressFirstName.Is("Drew").
                AddressLastName.Is("Michaelson").
                AddressLocality.Is("Chicago").
                AddressPostalCode.Is("12345").
                AddressRegion.Is("IL").
                AddressCountryName.Is("United States of America").
                AddressStreetAddress.Is("123 Main St").
                AddressExtendedAddress.Is("Suite 123").
                PaymentMethodToken.Is(creditCardToken).
                CardholderName.Is("Tim Toole").
                CreditCardNumber.Is("4111111111111111").
                CreditCardExpirationDate.Is("05/2012");

            ResourceCollection<Customer> collection = gateway.Customer.Search(searchRequest);

            Assert.AreEqual(1, collection.MaximumCount);
            Assert.AreEqual(customer.Id, collection.FirstItem.Id);
        }
Exemplo n.º 33
0
        public void Search_FindDuplicateCardsGivenPaymentMethodToken()
        {
            CreditCardRequest creditCard = new CreditCardRequest
            {
                Number = "4111111111111111",
                ExpirationDate = "05/2012"
            };

            CustomerRequest jimRequest = new CustomerRequest
            {
                FirstName = "Jim",
                CreditCard = creditCard
            };

            CustomerRequest joeRequest = new CustomerRequest
            {
                FirstName = "Jim",
                CreditCard = creditCard
            };

            Customer jim = gateway.Customer.Create(jimRequest).Target;
            Customer joe = gateway.Customer.Create(joeRequest).Target;

            CustomerSearchRequest searchRequest = new CustomerSearchRequest().
                PaymentMethodTokenWithDuplicates.Is(jim.CreditCards[0].Token);

            ResourceCollection<Customer> collection = gateway.Customer.Search(searchRequest);

            List<string> customerIds = new List<string>();
            foreach (Customer customer in collection) {
                customerIds.Add(customer.Id);
            }

            Assert.IsTrue(customerIds.Contains(jim.Id));
            Assert.IsTrue(customerIds.Contains(joe.Id));
        }
Exemplo n.º 34
0
        public void Search_OnPayPalAccountEmail()
        {
            var request = new CustomerRequest
            {
                PaymentMethodNonce = Nonce.PayPalFuturePayment
            };

            var customer = gateway.Customer.Create(request).Target;

            var search = new CustomerSearchRequest().
                Id.Is(customer.Id).
                PayPalAccountEmail.Is(customer.PayPalAccounts[0].Email);

            Assert.AreEqual(1, gateway.Customer.Search(search).MaximumCount);
        }
Exemplo n.º 35
0
        public void Customer_Add()
        {
            var api = Credentials.GetAPI();


            var request = new CustomerAddRequest(Credentials.EnterpriseCode, Credentials.DealerNumber, Settings.ServerName);
            var customer = new
            {
                FirstName = "Tom",
                LastName = "Monck",
                Email = "*****@*****.**"
            };
            // DT requires that you do a search for the entity first before you add.
            // They are trying to avoid duplicate customer records.
            // The search method returns a datatoken that is active for 15 minutes that you can use in an add request.
            string dataToken = null;
            try
            {
                var customerRequest = new CustomerSearchRequest(Credentials.EnterpriseCode, Credentials.DealerNumber)
                {
                    FirstName = customer.FirstName.ToUpper(),
                    LastName = customer.LastName.ToUpper(),
                    Email = customer.Email.ToUpper()
                };

                var searchResponse = api.FindCustomers(customerRequest);
                dataToken = searchResponse.DataToken;

            }
            catch (OpenTrackException openTrackException)
            {
                if (openTrackException.ErrorCode != "CS02") throw;

                var dataTokenElements = openTrackException.Response.GetElementsByTagName("DataToken");
                if (dataTokenElements.Count > 0)
                {
                    dataToken = dataTokenElements[0].InnerText;
                }

                request.Customer = new Customer
                {
                    DataToken = dataToken,
                    TypeCode = "C",
                    LastName = "Smith",
                    FirstName = "John",
                    MiddleName = "O",
                    Salutation = "Mr",
                    Gender = "Male",
                    Language = "English",
                    Address1 = "123 Main St",
                    Address2 = "Apt 103",
                    Address3 = "Test",
                    City = "Raleigh",
                    County = "Wake",
                    StateCode = "NC",
                    ZipCode = "27612",
                    PhoneNumber = "555-555-5555",
                    BusinessPhone = "555-555-5555",
                    BusinessExt = "426",
                    FaxNumber = "",
                    BirthDate = "",
                    DriversLicense = "",
                    Contact = "",
                    PreferredContact = "",
                    MailCode = "",
                    TaxExmptNumber = "",
                    AssignedSalesperson = "",
                    CustomerType = "R",
                    PreferredPhone = "",
                    CellPhone = "",
                    PagePhone = "",
                    OtherPhone = "",
                    OtherPhoneDesc = "",
                    Email1 = "*****@*****.**",
                    Email2 = "",
                    OptionalField = "",
                    AllowContactByPostal = "",
                    AllowContactByEmail = "Yes",
                    AllowContactByPhone = "",
                    BusinessPhoneExtension = "",
                    InternationalBusinessPhone = "",
                    InternationalCellPhone = "",
                    ExternalCrossReferenceKey = "",
                    InternationalFaxNumber = "",
                    InternationalOtherPhone = "",
                    InternationalHomePhone = "",
                    CustomerPreferredName = "",
                    InternationalPagerPhone = "",
                    PreferredLanguage = "",
                    InternationalZipCode = ""
                };

                var response = api.AddCustomer(request);
                Assert.NotNull(response);
            }
        }
Exemplo n.º 36
0
 /// <summary>
 /// Performs a direct search query again the BrainTree API
 /// </summary>
 /// <param name="query">
 /// The <see cref="CustomerSearchRequest"/>
 /// </param>
 /// <returns>
 /// The <see cref="ResourceCollection{Customer}"/>.
 /// </returns>
 public ResourceCollection<Customer> Search(CustomerSearchRequest query)
 {
     var attempt = this.TryGetApiResult(() => this.BraintreeGateway.Customer.Search(query));
     return attempt.Success ? attempt.Result : null;
 }