示例#1
0
        public Guid Add(Customer entity)
        {
            if (string.IsNullOrEmpty(entity.SSN))
                throw new ArgumentException("Customer number cannot be empty!");

            if (string.IsNullOrEmpty(entity.ContactDetail.ContactName))
                throw new ArgumentException("Customer name cannot be empty!");

            using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
            {
                if (CheckDuplicate(entity.Id, entity.SSN, ctx))
                {
                    throw new ArgumentException("Duplicate Customer number found!");
                }

                try
                {
                    ctx.Customers.AddObject(entity);
                    ctx.SaveChanges();
                    return entity.Id;
                }
                catch (Exception ex)
                {
                    LogService.Error("Error while adding customer", ex);
                    throw new ArgumentException("Error while adding new customer!");
                }
            }
        }
示例#2
0
        public void Delete(Guid id)
        {
            if (id.Equals(Guid.Empty))
                throw new ArgumentException("Employee id cannot be empty!");

            try
            {
                using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
                {
                    var entity = GetEmployeeById(id);

                    if (entity != null)
                    {
                        ctx.Employees.Attach(entity);
                        ctx.Employees.DeleteObject(entity);
                        ctx.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                LogService.Error("Error while deleting Employee", ex);
                throw ex;
            }
        }
示例#3
0
        public Guid Add(Order entity)
        {
            if (entity.BillNo <= 0)
                throw new ArgumentException("Order No cannot be empty!");

            if (entity.CustomerId == Guid.Empty)
                throw new ArgumentException("Order Customer cannot be empty!");

            if (entity.EmployeeId == Guid.Empty)
                throw new ArgumentException("Order Employee cannot be empty!");

            if (CheckDuplicateBillNo(entity.Id, entity.BillNo))
                throw new ArgumentException("Duplicate Order No found!");

            using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
            {
                try
                {
                    ctx.Orders.MergeOption = MergeOption.NoTracking;
                    ctx.Orders.AddObject(entity);
                    ctx.SaveChanges();
                    var id = entity.Id;
                    ctx.Detach(entity);
                    return id;
                }
                catch (Exception ex)
                {
                    LogService.Error("Error while adding order", ex);
                    throw new ArgumentException("Error while adding new order!", ex);
                }
            }
        }
示例#4
0
        public Guid Add(Purchase entity)
        {
            if (string.IsNullOrEmpty(entity.BillNo))
                throw new ArgumentException("Purchase No cannot be empty!");

            if (entity.SupplierId == Guid.Empty)
                throw new ArgumentException("Purchase supplier cannot be empty!");

            if (entity.EmployeeId == Guid.Empty)
                throw new ArgumentException("Purchase Employee cannot be empty!");

            if (CheckDuplicateBillNo(entity.Id, entity.BillNo))
                throw new ArgumentException("Duplicate Purchase No found!");

            using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
            {
                try
                {
                    ctx.Purchases.MergeOption = MergeOption.NoTracking;
                    ctx.Purchases.AddObject(entity);
                    ctx.SaveChanges();
                    var id = entity.Id;
                    ctx.Detach(entity);
                    return id;
                }
                catch (Exception ex)
                {
                    LogService.Error("Error while adding Purchase", ex);
                    throw new ArgumentException("Error while adding new Purchase!", ex);
                }
            }
        }
示例#5
0
 public Guid Add(Setting entity)
 {
     using (var ctx = new OpenPOSDbEntities())
     {
         ctx.Settings.AddObject(entity);
         ctx.SaveChanges();
         return entity.Id;
     }
 }
示例#6
0
 public Guid Add(Employee entity)
 {
     using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
     {
         try
         {
             ctx.Employees.AddObject(entity);
             ctx.SaveChanges();
             return entity.Id;
         }
         catch (Exception ex)
         {
             LogService.Error("Error while adding Employee", ex);
             throw new ArgumentException("Error while adding new Employee!");
         }
     }
 }
示例#7
0
        public Guid Add(Product entity)
        {
            if (string.IsNullOrEmpty(entity.Barcode))
                throw new ArgumentException("Product barcode cannot be empty!");

            if (string.IsNullOrEmpty(entity.Name))
                throw new ArgumentException("Product name cannot be empty!");

            using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
            {
                try
                {
                    entity.Status = true;
                    ctx.Products.AddObject(entity);
                    ctx.SaveChanges();
                    return entity.Id;
                }
                catch (Exception ex)
                {
                    LogService.Error("Error while adding product", ex);
                    throw new ArgumentException("Error while adding new product!");
                }
            }
        }
示例#8
0
        public void Update(Setting entity)
        {
            using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
            {
                try
                {

                    ctx.Settings.Attach(entity);
                    ctx.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);

                    ctx.Settings.ApplyCurrentValues(entity);
                    ctx.SaveChanges();
                }
                catch (Exception ex)
                {
                    LogService.Error("Error while updating settings", ex);
                    throw ex;
                }
            }
        }
示例#9
0
        public void Update(Employee entity)
        {
            if (entity.Id.Equals(Guid.Empty))
                throw new ArgumentException("Employee Id cannot be empty!");

            using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
            {
               try
                {

                    ctx.Employees.Attach(entity);

                    ctx.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);

                    ctx.Employees.ApplyCurrentValues(entity);

                    ctx.SaveChanges();

                }
                catch (Exception ex)
                {
                    LogService.Error("Error while updating Employee", ex);
                    throw ex;
                }
            }
        }
示例#10
0
        public void Update(Order entity)
        {
            if (entity.Id.Equals(Guid.Empty))
                throw new ArgumentException("Order Id cannot be empty!");

            if (entity.BillNo <= 0)
                throw new ArgumentException("Order No cannot be empty!");

            if (entity.CustomerId == Guid.Empty)
                throw new ArgumentException("Order Customer cannot be empty!");

            if (entity.EmployeeId == Guid.Empty)
                throw new ArgumentException("Order Employee cannot be empty!");

            if (CheckDuplicateBillNo(entity.Id, entity.BillNo))
                throw new ArgumentException("Duplicate Order No found!");

            using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
            {
                try
                {
                    using (var scope = new TransactionScope(TransactionScopeOption.Required))
                    {
                        ctx.ExecuteStoreCommand("DELETE FROM OrderDetails WHERE OrderId = {0};", entity.Id);
                        ctx.ExecuteStoreCommand("DELETE FROM Payments WHERE OrderId = {0};", entity.Id);

                        foreach (var od in entity.OrderDetails)
                        {
                            ctx.AttachTo("OrderDetails", od);
                            ctx.ObjectStateManager.ChangeObjectState(od, System.Data.EntityState.Added);
                        }

                        foreach (var payment in entity.Payments)
                        {
                            ctx.AttachTo("Payments", payment);
                            ctx.ObjectStateManager.ChangeObjectState(payment, System.Data.EntityState.Added);
                        }

                        ctx.AttachTo("Orders", entity);
                        ctx.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);

                        ctx.SaveChanges();

                        scope.Complete();
                    }
                }
                catch (Exception ex)
                {
                    LogService.Error("Error while updating order", ex);
                    throw new ArgumentException("Error while updating order!", ex);
                }
            }
        }
示例#11
0
        public void Update(Customer entity)
        {
            if (entity.Id.Equals(Guid.Empty))
                throw new ArgumentException("Customer Id cannot be empty!");

            if (string.IsNullOrEmpty(entity.SSN))
                throw new ArgumentException("Customer number cannot be empty!");

            if (string.IsNullOrEmpty(entity.ContactDetail.ContactName))
                throw new ArgumentException("Customer name cannot be empty!");

            using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
            {
                if (CheckDuplicate(entity.Id, entity.SSN, ctx))
                {
                    throw new ArgumentException("Duplicate Customer number found!");
                }

                try
                {

                    ctx.Customers.Attach(entity);
                    ctx.ContactDetails.Attach(entity.ContactDetail);

                    ctx.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);
                    ctx.ObjectStateManager.ChangeObjectState(entity.ContactDetail, System.Data.EntityState.Modified);

                    ctx.Customers.ApplyCurrentValues(entity);
                    ctx.ContactDetails.ApplyCurrentValues(entity.ContactDetail);

                    ctx.SaveChanges();

                }
                catch (Exception ex)
                {
                    LogService.Error("Error while updating customer", ex);
                }
            }
        }
示例#12
0
        public void Update(Purchase entity)
        {
            if (entity == null)
                throw new ArgumentNullException("entity");

            if (string.IsNullOrEmpty(entity.BillNo))
                throw new ArgumentException("Purchase No cannot be empty!");

            if (entity.SupplierId == Guid.Empty)
                throw new ArgumentException("Purchase supplier cannot be empty!");

            if (entity.EmployeeId == Guid.Empty)
                throw new ArgumentException("Purchase Employee cannot be empty!");

            if (CheckDuplicateBillNo(entity.Id, entity.BillNo))
                throw new ArgumentException("Duplicate Purchase No found!");

            try
            {
                using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
                {
                    using (var scope = new TransactionScope(TransactionScopeOption.Required))
                    {
                        ctx.ExecuteStoreCommand("DELETE FROM PurchaseDetails WHERE PurchaseId = {0};", entity.Id);
                        ctx.ExecuteStoreCommand("DELETE FROM PurchasePayments WHERE PurchaseId = {0};", entity.Id);

                        foreach (var od in entity.PurchaseDetails)
                        {
                            ctx.AttachTo("PurchaseDetails", od);
                            ctx.ObjectStateManager.ChangeObjectState(od, System.Data.EntityState.Added);
                        }

                        foreach (var payment in entity.PurchasePayments)
                        {
                            ctx.AttachTo("PurchasePayments", payment);
                            ctx.ObjectStateManager.ChangeObjectState(payment, System.Data.EntityState.Added);
                        }

                        ctx.AttachTo("Purchases", entity);
                        ctx.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);

                        ctx.SaveChanges();

                        scope.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                LogService.Error("Error while updating Purchase", ex);
                throw new ArgumentException("Error while updating Purchase", ex);
            }
        }
示例#13
0
        public void Update(Product entity)
        {
            if (entity.Id.Equals(Guid.Empty))
                throw new ArgumentException("Product Id cannot be empty!");

            if (string.IsNullOrEmpty(entity.Barcode))
                throw new ArgumentException("Product barcode cannot be empty!");

            if (string.IsNullOrEmpty(entity.Name))
                throw new ArgumentException("Product name cannot be empty!");

            using (OpenPOSDbEntities ctx = new OpenPOSDbEntities())
            {
                try
                {

                    ctx.Products.Attach(entity);
                    ctx.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);
                    ctx.Products.ApplyCurrentValues(entity);

                    ctx.SaveChanges();
                }
                catch (Exception ex)
                {
                    LogService.Error("Error while updating product", ex);
                    throw ex;
                }
            }
        }