Exemple #1
0
        public static void AddPoints(Models.Customers.Customer customer, Models.Customers.LoyaltyPartner partner, long points, string comments, Models.Core.User user)
        {
            if (points > 0)
            {
                using (var session = DataConnector.NHibernateConnector.OpenSession())
                {
                    using (var dbTransaction = session.BeginTransaction())
                    {
                        try
                        {
                            Models.Customers.LoyaltyTransaction transaction = new Models.Customers.LoyaltyTransaction();

                            transaction.TransactionDate = DateTime.Now;
                            if (points > 0)
                            {
                                transaction.PointsDestination = partner;
                            }
                            if (points < 0)
                            {
                                transaction.PointsOrigin = partner;
                            }
                            transaction.Points   = points;
                            transaction.User     = user;
                            transaction.Comments = comments;
                            transaction.Customer = customer;

                            session.Save(transaction);

                            var balanceObject = session.CreateCriteria(typeof(Models.Customers.LoyaltyBalance))
                                                .Add(Expression.Eq("Customer", customer))
                                                .Add(Expression.Eq("Partner", partner))
                                                .UniqueResult <Models.Customers.LoyaltyBalance>();

                            if (balanceObject == null)
                            {
                                balanceObject          = new Models.Customers.LoyaltyBalance();
                                balanceObject.Customer = customer;
                                balanceObject.Partner  = partner;
                                balanceObject.Points   = 0;
                            }

                            balanceObject.Points = balanceObject.Points + points;

                            session.SaveOrUpdate(balanceObject);

                            dbTransaction.Commit();
                        }
                        catch (Exception ex)
                        {
                            dbTransaction.Rollback();
                            throw ex;
                        }
                    }
                }
            }
            else if (points < 0)
            {
                UsePoints(customer, partner, points, comments);
            }
        }
Exemple #2
0
        public static Models.Customers.Customer Put(Models.Customers.Customer customer)
        {
            if (string.IsNullOrEmpty(customer.LoyaltyCardNumber))
            {
                customer.LoyaltyCardNumber = Loyalty.Card.GetNextLoyaltyCardNumber(true);
            }
            if (customer.Id == Guid.Empty)
            {
                FamiHub.Crud.Put(customer);
                if (CustomerDataPush.Becosoft.CustomerLinkActive)
                {
                    CustomerDataPush.Becosoft.Create(customer);
                }
            }
            else
            {
                FamiHub.Crud.Put(customer);
                if (CustomerDataPush.Becosoft.CustomerLinkActive)
                {
                    CustomerDataPush.Becosoft.Update(customer);
                }
            }

            return(customer);
        }
 private static async Task <bool> CheckCurrentCustomers(Models.Customers.Customer customer)
 {
     using (var db = new DataAccess.CaraxEntitiy())
     {
         return(await db.Customers.AnyAsync(q => q.Tc == customer.Tc || q.FirstPhone == customer.FirstPhone));
     }
 }
Exemple #4
0
        public AddLoyaltyTransaction(CustomerForm parentCustomerForm, Models.Customers.Customer customer)
        {
            InitializeComponent();

            _parentCustomerForm = parentCustomerForm;
            _customer           = customer;

            LoadPartners();
        }
Exemple #5
0
        public static void Create(Models.Customers.Customer customer)
        {
            BECO_Pro_FAM_CCLink.Customers customers = new BECO_Pro_FAM_CCLink.Customers();
            long becosoftCustomerId = customers.Add(customer.LastName, customer.FirstName, customer.Street, customer.Number,
                                                    customer.Box, String.Empty, 0, customer.Zip, customer.City, 0,
                                                    customer.Phone, customer.MobilePhone, customer.LoyaltyCardNumber);

            General.ExternalReferences.PutReference("Customer:Becosoft", customer.Id, becosoftCustomerId);
        }
Exemple #6
0
        public static void Update(Models.Customers.Customer customer)
        {
            BECO_Pro_FAM_CCLink.Customers customers = new BECO_Pro_FAM_CCLink.Customers();
            long becosoftCustomerId = Convert.ToInt64(General.ExternalReferences.GetReference("Customer:Becosoft", customer.Id));

            customers.Update(becosoftCustomerId, customer.LastName, customer.FirstName, customer.Street, customer.Number,
                             customer.Box, String.Empty, 0, customer.Zip, customer.City, 0,
                             customer.Phone, customer.MobilePhone, customer.LoyaltyCardNumber);
        }
Exemple #7
0
        public UseLoyaltyPoints(CustomerForm parentCustomerForm, Models.Customers.Customer customer)
        {
            InitializeComponent();

            _parentCustomerForm = parentCustomerForm;
            _customer           = customer;

            LoadPartners();
        }
        public async Task <IActionResult> Create([FromBody] Models.Customers.Customer customer)
        {
            if (!await PublicAuthLogic.CheckAccessToken(GetAccessToken(), GetDepartmentCode()))
            {
                return(Unauthorized());
            }
            var isSuccess = await CustomerLogic.Add(customer, GetDepartmentCode());

            return(Ok(isSuccess));
        }
Exemple #9
0
        public static IList <string> GeneratePhysicalCardNumbers(int numberOfCardsToCreate)
        {
            IList <string> cards = new List <string>();

            for (int i = 0; i < numberOfCardsToCreate; i++)
            {
                Models.Customers.Customer customer = new Models.Customers.Customer();
                customer.LoyaltyCardNumber = GetNextLoyaltyCardNumber(false);
                customer.FirstName         = "Loyalty card (not activated) - " + customer.LoyaltyCardNumber;
                Customers.Crud.Put(customer);
                cards.Add(customer.LoyaltyCardNumber);
            }

            return(cards);
        }
Exemple #10
0
        public static long CheckBalance(Models.Customers.Customer customer)
        {
            var session = DataConnector.NHibernateConnector.OpenSession();
            var bal     = session.CreateCriteria(typeof(Models.Customers.LoyaltyBalance))
                          .Add(Expression.Eq("Customer", customer))
                          .List <Models.Customers.LoyaltyBalance>();

            long totalBalance = 0;

            foreach (var balItem in bal)
            {
                totalBalance = totalBalance + balItem.Points;
            }

            return(totalBalance);
        }
Exemple #11
0
        public CustomerForm(FHFormTab caller, Models.Customers.Customer customer)
        {
            InitializeComponent();

            _caller   = caller;
            _customer = customer;
            if (_customer == null)
            {
                _customer = new Models.Customers.Customer();
            }

            Common.ComboBoxFiller.CountryComboBox(cmbCountry);
            Common.ComboBoxFiller.SalutationComboBox(cmbSalutation);

            LoadData();
        }
        public static async Task <bool> Add(Guid token, Models.Customers.Customer customer)
        {
            var userInfo = AuthenticationLogic.CheckTokenInfo(token);

            customer.CreatedDateTime = DateTime.Now;
            customer.CreatedBy       = userInfo.Username;
            customer.DepartmentCode  = userInfo.DepartmentCode;
            customer.CompanyCode     = userInfo.CompanyCode;

            using (var db = new DataAccess.CaraxEntitiy())
            {
                if (!await CheckCurrentCustomers(customer))
                {
                    await db.Customers.AddAsync(customer);

                    return(await db.SaveChangesAsync() > 0);
                }

                return(false);
            }
        }
Exemple #13
0
        public static void UsePoints(Models.Customers.Customer customer, Models.Customers.LoyaltyPartner partner, long points, string info)
        {
            using (var session = DataConnector.NHibernateConnector.OpenSession())
            {
                try
                {
                    var balanceObject = session.CreateCriteria(typeof(Models.Customers.LoyaltyBalance))
                                        .Add(Expression.Eq("Customer", customer))
                                        .Add(Expression.Eq("Partner", partner))
                                        .UniqueResult <Models.Customers.LoyaltyBalance>();

                    if (balanceObject == null)
                    {
                        balanceObject          = new Models.Customers.LoyaltyBalance();
                        balanceObject.Customer = customer;
                        balanceObject.Partner  = partner;
                        balanceObject.Points   = 0;
                        session.Save(balanceObject);
                    }

                    if (balanceObject.Points < points)
                    {
                        TopUpPointsFromOtherPartner(customer, partner, points - balanceObject.Points);

                        balanceObject = session.CreateCriteria(typeof(Models.Customers.LoyaltyBalance))
                                        .Add(Expression.Eq("Customer", customer))
                                        .Add(Expression.Eq("Partner", partner))
                                        .UniqueResult <Models.Customers.LoyaltyBalance>();
                    }

                    AddPoints(customer, partner, -points, info);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
        public static async Task <bool> Update(Guid token, Models.Customers.Customer customer)
        {
            var userInfo = AuthenticationLogic.CheckTokenInfo(token);

            using (var db = new DataAccess.CaraxEntitiy())
            {
                var cs = db.Customers.First(q => q.Id == customer.Id);

                cs.Tc                           = customer.Tc;
                cs.Address                      = customer.Address;
                cs.BirthOfDateTime              = customer.BirthOfDateTime;
                cs.EMail                        = customer.EMail;
                cs.FirstPhone                   = customer.FirstPhone;
                cs.Gender                       = customer.Gender;
                cs.Name                         = customer.Name;
                cs.Nationality                  = customer.Nationality;
                cs.PassportSerialNumber         = customer.PassportSerialNumber;
                cs.SecondPhone                  = customer.SecondPhone;
                cs.SerialNumberOfDrivingLicense = customer.SerialNumberOfDrivingLicense;
                cs.Surname                      = customer.Surname;
                cs.LicenseYear                  = customer.LicenseYear;
                cs.UpdatedDateTime              = DateTime.Now;
                cs.UpdatedBy                    = userInfo.Username;
                cs.CompanyCode                  = userInfo.CompanyCode;
                cs.DepartmentCode               = userInfo.DepartmentCode;
                cs.NameOfFather                 = customer.NameOfFather;
                cs.NameOfMother                 = customer.NameOfMother;
                cs.DrivingClasses               = customer.DrivingClasses;
                cs.BloodGroup                   = customer.BloodGroup;
                cs.Profession                   = customer.Profession;
                cs.CityId                       = customer.CityId;
                cs.CountryCode                  = customer.CountryCode;
                cs.CountyId                     = customer.CountyId;
                cs.IsAdditionalDriver           = customer.IsAdditionalDriver;
                db.Customers.Update(cs);
                return(await db.SaveChangesAsync() > 0);
            }
        }
        // Public Customer Logic

        public static async Task <Models.Customers.Customer> Add(Models.Customers.Customer customer, string departmentCode)
        {
            customer.CreatedDateTime = DateTime.Now;
            customer.CreatedBy       = departmentCode;
            customer.DepartmentCode  = departmentCode;
            customer.CompanyCode     = customer.CompanyCode;


            using (var db = new DataAccess.CaraxEntitiy())
            {
                if (!await CheckCurrentCustomers(customer))
                {
                    await db.Customers.AddAsync(customer);

                    await db.SaveChangesAsync();

                    return(customer);
                }

                var finded = db.Customers.First(q => q.Tc == customer.Tc || q.FirstPhone == customer.FirstPhone);
                return(finded);
            }
        }
Exemple #16
0
        public static void TopUpPointsFromOtherPartner(Models.Customers.Customer customer, Models.Customers.LoyaltyPartner partner, long topupPoints)
        {
            using (var session = DataConnector.NHibernateConnector.OpenSession())
            {
                var partners = session.CreateCriteria(typeof(Models.Customers.LoyaltyPartner))
                               .Add(Expression.Not(Expression.Eq("Id", partner.Id)))
                               .AddOrder(Order.Desc("ShortageFillerIndex"))
                               .List <Models.Customers.LoyaltyPartner>();

                var balanceObjects = new List <Models.Customers.LoyaltyBalance>();
                foreach (var partnerObject in partners)
                {
                    var balanceObject = session.CreateCriteria(typeof(Models.Customers.LoyaltyBalance))
                                        .Add(Expression.Eq("Customer", customer))
                                        .Add(Expression.Eq("Partner", partnerObject))
                                        .UniqueResult <Models.Customers.LoyaltyBalance>();
                    balanceObjects.Add(balanceObject);
                }

                foreach (var balance in balanceObjects)
                {
                    if (balance.Points > 0)
                    {
                        if (balance.Points >= topupPoints)
                        {
                            MovePoints(customer, balance.Partner, partner, topupPoints);
                            topupPoints = 0;
                        }
                        else
                        {
                            MovePoints(customer, balance.Partner, partner, balance.Points);
                            topupPoints = topupPoints - balance.Points;
                        }
                    }
                }
            }
        }
 public CustomerChangedEmail(Models.Customers.Customer customer)
 {
     Customer = customer;
 }
Exemple #18
0
        public static void MovePoints(Models.Customers.Customer customer, Models.Customers.LoyaltyPartner fromPartner, Models.Customers.LoyaltyPartner toPartner, long points)
        {
            if (points != 0)
            {
                using (var session = DataConnector.NHibernateConnector.OpenSession())
                {
                    using (var dbTransaction = session.BeginTransaction())
                    {
                        try
                        {
                            Models.Customers.LoyaltyTransaction transaction = new Models.Customers.LoyaltyTransaction();

                            transaction.TransactionDate   = DateTime.Now;
                            transaction.PointsOrigin      = fromPartner;
                            transaction.PointsDestination = toPartner;
                            transaction.Points            = points;
                            transaction.Customer          = customer;

                            session.Save(transaction);

                            // Add points to destination partner balance

                            var balanceObjectDestination = session.CreateCriteria(typeof(Models.Customers.LoyaltyBalance))
                                                           .Add(Expression.Eq("Customer", customer))
                                                           .Add(Expression.Eq("Partner", toPartner))
                                                           .UniqueResult <Models.Customers.LoyaltyBalance>();

                            if (balanceObjectDestination == null)
                            {
                                balanceObjectDestination          = new Models.Customers.LoyaltyBalance();
                                balanceObjectDestination.Customer = customer;
                                balanceObjectDestination.Partner  = toPartner;
                                balanceObjectDestination.Points   = 0;
                            }

                            balanceObjectDestination.Points = balanceObjectDestination.Points + points;
                            session.SaveOrUpdate(balanceObjectDestination);

                            // Take points from origin partner balance

                            var balanceObjectOrigin = session.CreateCriteria(typeof(Models.Customers.LoyaltyBalance))
                                                      .Add(Expression.Eq("Customer", customer))
                                                      .Add(Expression.Eq("Partner", fromPartner))
                                                      .UniqueResult <Models.Customers.LoyaltyBalance>();

                            if (balanceObjectOrigin == null)
                            {
                                balanceObjectOrigin          = new Models.Customers.LoyaltyBalance();
                                balanceObjectOrigin.Customer = customer;
                                balanceObjectOrigin.Partner  = fromPartner;
                                balanceObjectOrigin.Points   = 0;
                            }

                            balanceObjectOrigin.Points = balanceObjectOrigin.Points - points;
                            session.SaveOrUpdate(balanceObjectOrigin);

                            dbTransaction.Commit();
                        }
                        catch (Exception ex)
                        {
                            dbTransaction.Rollback();
                            throw ex;
                        }
                    }
                }
            }
        }
Exemple #19
0
        public static IEnumerable <Models.Customers.LoyaltyTransaction> GetAllTransactions(Models.Customers.Customer customer)
        {
            var session = DataConnector.NHibernateConnector.OpenSession();
            var trans   = session.CreateCriteria(typeof(Models.Customers.LoyaltyTransaction))
                          .Add(Expression.Eq("Customer", customer))
                          .List <Models.Customers.LoyaltyTransaction>();

            return(trans);
        }
        public async Task <IActionResult> Update([FromBody] Models.Customers.Customer customer)
        {
            var isSuccess = await CustomerLogic.Update(GetToken(), customer);

            return(Ok(isSuccess));
        }
Exemple #21
0
 public static void AddPoints(Models.Customers.Customer customer, Models.Customers.LoyaltyPartner partner, long points, Models.Core.User user)
 {
     AddPoints(customer, partner, points, null, user);
 }
Exemple #22
0
 public static void AddPoints(Models.Customers.Customer customer, Models.Customers.LoyaltyPartner partner, long points, string comments)
 {
     AddPoints(customer, partner, points, comments, null);
 }
 public CustomerCreated(Models.Customers.Customer customer)
 {
     Customer = customer;
 }