Пример #1
0
        // Creates Customer account and on success creates a new webship account for it
        public static AccountsCreationResponse CreateAccounts(AccountsCreationRequest request)
        {
            // TODO: Some of the tables updated in webship account creation do not have domain objects
            // TODO: So they lack code to prevent killing the database insert with bad data
            // TODO: For now, just scrub the fields in question here
            request.BillingZip     = ToDigitsOnly(request.BillingZip);
            request.CompanyBillZip = ToDigitsOnly(request.CompanyBillZip);
            request.CCNumber       = ToDigitsOnly(request.CCNumber);
            request.RequesterPhone = ToDigitsOnly(request.RequesterPhone);
            request.CompanyPhone   = ToDigitsOnly(request.CompanyPhone);
            request.CompanyPhyZip  = ToDigitsOnly(request.CompanyPhyZip);

            var response       = new AccountsCreationResponse();
            var custfactory    = new LsoCustomerFactory();
            var webacctfactory = new WebshipAccountFactory();

            var cust    = custfactory.Create(request);
            var webacct = webacctfactory.Create(request);


            // TODO: make a validator class that looks at all data in these new
            // domain instances and either run it on them, or weave it into the
            // property set code in each domain object

            var customerRepository       = RepositoryFactory.GetNewCustomerRepository();
            var webshipAccountRepository = RepositoryFactory.GetNewWebshipAccountRepository();

            response.Success = true;

            // TODO: We don't have validation in place, so bad data errors will be lost with this current implementation
            try
            {
                // TODO: With different databases, and the repository pattern we don't get transactions
                // TODO: We will need to modify this code to catch errors and remove spurious accounts
                // TODO: Or add a transaction pattern
                customerRepository.Add(cust);
                webacct.CustID = cust.CustID;
                webshipAccountRepository.Add(webacct);
                response.CustomerId = webacct.CustID;
                response.LoginName  = webacct.LoginName;
            }
            catch (Exception ex)
            {
                response.Success = false;
                response.Errors  = new ValidationErrors();
                response.Errors.ErrorsMessage = new List <string>();
                var trace = new System.Diagnostics.StackTrace(ex, true);

                response.Errors.ErrorsMessage.Add(ex.Message + " " + trace.GetFrame(0).GetMethod().Name + " " + "Line: " + trace.GetFrame(0).GetFileLineNumber() + " " + "Column: " + trace.GetFrame(0).GetFileColumnNumber());
                if (ex.InnerException != null)
                {
                    var trace2 = new System.Diagnostics.StackTrace(ex.InnerException, true);
                    response.Errors.ErrorsMessage.Add(ex.InnerException.Message + " " + trace2.GetFrame(0).GetMethod().Name + " " + "Line: " + trace2.GetFrame(0).GetFileLineNumber() + " " + "Column: " + trace2.GetFrame(0).GetFileColumnNumber());
                }
            }

            return(response);
        }
        public IWebshipAccount Create(AccountsCreationRequest data)
        {
            var webacct = new WebshipAccount();

            Mapper.Reset();
            Mapper.CreateMap <AccountsCreationRequest, WebshipAccount>()
            .ForMember(dest => dest.UserFirstName, opt => opt.MapFrom(src => src.RequesterFirstName))
            .ForMember(dest => dest.UserLastName, opt => opt.MapFrom(src => src.RequesterLastName))
            .ForMember(dest => dest.UserEmail, opt => opt.MapFrom(src => src.RequesterEmail))
            .ForMember(dest => dest.CompanyAddress1, opt => opt.MapFrom(src => src.CompanyPhyAddress1))
            .ForMember(dest => dest.CompanyAddress2, opt => opt.MapFrom(src => src.CompanyPhyAddress2))
            .ForMember(dest => dest.CompanyCity, opt => opt.MapFrom(src => src.CompanyPhyCity))
            .ForMember(dest => dest.CompanyState, opt => opt.MapFrom(src => src.CompanyPhyState))
            .ForMember(dest => dest.CompanyZip, opt => opt.MapFrom(src => src.CompanyPhyZip))
            .ForMember(dest => dest.UID, opt => opt.Ignore())
            .ForMember(dest => dest.Administrator, opt => opt.Ignore())
            .ForMember(dest => dest.CustID, opt => opt.Ignore())
            .ForMember(dest => dest.LastLoginDate, opt => opt.Ignore())
            .ForMember(dest => dest.LoginsToDate, opt => opt.Ignore())
            .ForMember(dest => dest.LoginAttemptsToday, opt => opt.Ignore())
            .ForMember(dest => dest.LoginFailedToday, opt => opt.Ignore())
            .ForMember(dest => dest.PWDChangedLast, opt => opt.Ignore())
            .ForMember(dest => dest.PWDResentLast, opt => opt.Ignore())
            .ForMember(dest => dest.PWDResentCount, opt => opt.Ignore())
            .ForMember(dest => dest.PWDResentToday, opt => opt.Ignore())
            .ForMember(dest => dest.ABEntryToday, opt => opt.Ignore())
            .ForMember(dest => dest.CreatedBy, opt => opt.Ignore())
            .ForMember(dest => dest.CreateDate, opt => opt.Ignore())
            .ForMember(dest => dest.AccountLockout, opt => opt.Ignore())
            .ForMember(dest => dest.PrintToLabel, opt => opt.Ignore())
            .ForMember(dest => dest.DefaultService, opt => opt.Ignore())
            .ForMember(dest => dest.BillingRefRequired, opt => opt.Ignore())
            .ForMember(dest => dest.EmailPOD, opt => opt.Ignore())
            .ForMember(dest => dest.SuperWebShipper, opt => opt.Ignore())
            .ForMember(dest => dest.UseLocBillingRef, opt => opt.Ignore())
            .ForMember(dest => dest.HandlingFee, opt => opt.Ignore())
            .ForMember(dest => dest.PrintPublishedRates, opt => opt.Ignore())
            .ForMember(dest => dest.IsUserAdmin, opt => opt.Ignore())
            .ForMember(dest => dest.Active, opt => opt.Ignore())
            .ForMember(dest => dest.ShowOnlyUserShipments, opt => opt.Ignore())
            .ForMember(dest => dest.DisableBillingReferenceRequired, opt => opt.Ignore())
            .ForMember(dest => dest.HardCodeBillingRef, opt => opt.Ignore())
            .ForMember(dest => dest.HardCodedBillingRefValue, opt => opt.Ignore())
            .ForMember(dest => dest.HardCodeBillingRef2, opt => opt.Ignore())
            .ForMember(dest => dest.HardCodedBillingRefValue2, opt => opt.Ignore())
            .ForMember(dest => dest.newCustomerReferralSourceID, opt => opt.Ignore())
            .ForMember(dest => dest.ActivityNotes, opt => opt.Ignore());

            webacct.AllowAutomapExceptions = true;
            Mapper.Map <AccountsCreationRequest, WebshipAccount>(data, webacct);
            Mapper.AssertConfigurationIsValid();
            webacct.AllowAutomapExceptions = false;

            return(webacct);
        }
Пример #3
0
        public static IList <AccountsSearchResponse> SearchForDuplicateAccounts(AccountsCreationRequest request)
        {
            var result             = new List <AccountsSearchResponse>();
            var customerRepository = RepositoryFactory.GetNewCustomerRepository();


            result.AddRange(
                customerRepository.GetAllWithDataLike(request.CompanyName, request.RequesterFirstName + " " + request.RequesterLastName, request.CompanyBillAddress1, request.RequesterPhone, request.CompanyPhyAddress1)
                .Select(cust => new AccountsSearchResponse()
            {
                SafeName         = GetSafeName(cust),
                BillToAddress1   = cust.BillToAddress1,
                CustContactName  = cust.CustContactName,
                CustContactPhone = cust.CustContactPhone,
                CustName         = cust.CustName,
                CustomerId       = cust.CustID,
                PhyAddress1      = cust.PhyAddress1,
                Success          = true
            }));

            // return unique customerIDs only
            return(result.Distinct().ToList());
        }
        public ILsoCustomer Create(AccountsCreationRequest data)
        {
            var    cust        = new LsoCustomer();
            string contactName = data.RequesterFirstName + " " + data.RequesterLastName;

            Mapper.Reset();

            // TODO: customer object does not have a company phone
            Mapper.CreateMap <AccountsCreationRequest, LsoCustomer>()
            .ForMember(dest => dest.CustContactName, opt => opt.UseValue(contactName))
            .ForMember(dest => dest.CustContactPhone, opt => opt.MapFrom(src => src.RequesterPhone))
            .ForMember(dest => dest.CustName, opt => opt.MapFrom(src => src.CompanyName))
            .ForMember(dest => dest.PhyAddress1, opt => opt.MapFrom(src => src.CompanyPhyAddress1))
            .ForMember(dest => dest.PhyAddress2, opt => opt.MapFrom(src => src.CompanyPhyAddress2))
            .ForMember(dest => dest.PhyCity, opt => opt.MapFrom(src => src.CompanyPhyCity))
            .ForMember(dest => dest.PhyState, opt => opt.MapFrom(src => src.CompanyPhyState))
            .ForMember(dest => dest.PhyZip, opt => opt.MapFrom(src => src.CompanyPhyZip))
            .ForMember(dest => dest.BillToAttnName, opt => opt.UseValue(contactName))
            .ForMember(dest => dest.BillToAddress1, opt => opt.MapFrom(src => src.CompanyBillAddress1))
            .ForMember(dest => dest.BillToAddress2, opt => opt.MapFrom(src => src.CompanyBillAddress2))
            .ForMember(dest => dest.BillToCity, opt => opt.MapFrom(src => src.CompanyBillCity))
            .ForMember(dest => dest.BillToState, opt => opt.MapFrom(src => src.CompanyBillState))
            .ForMember(dest => dest.BillToZip, opt => opt.MapFrom(src => src.CompanyBillZip))
            .ForMember(dest => dest.CardType, opt => opt.MapFrom(src => src.CCType))
            .ForMember(dest => dest.CardNo, opt => opt.MapFrom(src => src.CCNumber))
            .ForMember(dest => dest.CardExpMonth, opt => opt.MapFrom(src => src.CCExpMonth))
            .ForMember(dest => dest.CardExpYear, opt => opt.MapFrom(src => src.CCExpYear))
            .ForMember(dest => dest.NameOnCard, opt => opt.MapFrom(src => src.CCName))
            .ForMember(dest => dest.CustID, opt => opt.Ignore())
            .ForMember(dest => dest.PriceSchedule, opt => opt.Ignore())
            .ForMember(dest => dest.DateOpened, opt => opt.Ignore())
            .ForMember(dest => dest.LSOContactEmpNum, opt => opt.Ignore())
            .ForMember(dest => dest.SalesRepEmpNum, opt => opt.Ignore())
            .ForMember(dest => dest.RestartDate, opt => opt.Ignore())
            .ForMember(dest => dest.SICCode, opt => opt.Ignore())
            .ForMember(dest => dest.DOWBillingCode, opt => opt.Ignore())
            .ForMember(dest => dest.CreditLimit, opt => opt.Ignore())
            .ForMember(dest => dest.Balance, opt => opt.Ignore())
            .ForMember(dest => dest.CreditAvail, opt => opt.Ignore())
            .ForMember(dest => dest.AcctStatus, opt => opt.Ignore())
            .ForMember(dest => dest.NetDueDays, opt => opt.Ignore())
            .ForMember(dest => dest.InterestPercent, opt => opt.Ignore())
            .ForMember(dest => dest.PayMethodID, opt => opt.Ignore())
            .ForMember(dest => dest.HeldCycleCount, opt => opt.Ignore())
            .ForMember(dest => dest.EditDateTime, opt => opt.Ignore())
            .ForMember(dest => dest.LastEditEmp, opt => opt.Ignore())
            .ForMember(dest => dest.LastShipDate, opt => opt.Ignore())
            .ForMember(dest => dest.WaivePUFee, opt => opt.Ignore())
            .ForMember(dest => dest.LocCode, opt => opt.Ignore())
            .ForMember(dest => dest.WaiveFuelFee, opt => opt.Ignore())
            .ForMember(dest => dest.PageCount, opt => opt.Ignore())
            .ForMember(dest => dest.BillToID, opt => opt.Ignore())
            .ForMember(dest => dest.EDICustomer, opt => opt.Ignore())
            .ForMember(dest => dest.LastStatusEditDate, opt => opt.Ignore())
            .ForMember(dest => dest.LastStatusEditEmp, opt => opt.Ignore())
            .ForMember(dest => dest.OnHoldOverride, opt => opt.Ignore())
            .ForMember(dest => dest.First60DayRev, opt => opt.Ignore())
            .ForMember(dest => dest.Hit, opt => opt.Ignore())
            .ForMember(dest => dest.LinkedCustID, opt => opt.Ignore())
            .ForMember(dest => dest.WaiveResDelivFee, opt => opt.Ignore())
            .ForMember(dest => dest.StarCustomer, opt => opt.Ignore())
            .ForMember(dest => dest.WaiveDimWt, opt => opt.Ignore())
            .ForMember(dest => dest.KnownShipper, opt => opt.Ignore())
            .ForMember(dest => dest.ReferralRep, opt => opt.Ignore())
            .ForMember(dest => dest.BillingRefRequired, opt => opt.Ignore())
            .ForMember(dest => dest.ParentCustID, opt => opt.Ignore())
            .ForMember(dest => dest.InheritDiscounts, opt => opt.Ignore())
            .ForMember(dest => dest.WaiveSignatureFee, opt => opt.Ignore())
            .ForMember(dest => dest.WaiveRemoteDeliveryFee, opt => opt.Ignore())
            .ForMember(dest => dest.WaiveManualProcessingFee, opt => opt.Ignore())
            .ForMember(dest => dest.WaiveOnCallFee, opt => opt.Ignore())
            .ForMember(dest => dest.DisallowSimplePricing, opt => opt.Ignore())
            .ForMember(dest => dest.newCustomerReferralSourceID, opt => opt.Ignore())
            .ForMember(dest => dest.DeclaredValueSignature, opt => opt.Ignore())
            .ForMember(dest => dest.TieredDiscountWindow, opt => opt.Ignore())
            .ForMember(dest => dest.WaiveSecuredFacilityFee, opt => opt.Ignore())
            .ForMember(dest => dest.WaivePickupEventFee, opt => opt.Ignore())
            .ForMember(dest => dest.CCOptOut, opt => opt.MapFrom(src => src.CCOptOut));


            cust.AllowAutomapExceptions = true;
            Mapper.Map <AccountsCreationRequest, LsoCustomer>(data, cust);

            Mapper.AssertConfigurationIsValid();
            cust.AllowAutomapExceptions = false;

            return(cust);
        }
Пример #5
0
 public static IList <AccountsSearchResponse> PublicSearchForDuplicateAccounts(AccountsCreationRequest request)
 {
     // TODO: Possibly additional error checking here to make sure no info is leaked
     return(SearchForDuplicateAccounts(request)
            .Select(resp => new AccountsSearchResponse()
     {
         SafeName = resp.SafeName,
         CustName = GetSubString(resp.CustName, 5)
     })
            .Take(30).ToArray());
 }