示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sItemID"></param>
        /// <returns></returns>
        public bool DeleteItem(string sItemID)
        {
            HardwareRequirement item = db.HardwareRequirements.Where(i => i.ID == sItemID).SingleOrDefault();

            if (item != null)
            {
                if (item.Status == (int)OrderStatus.CHECKED ||
                    item.Status == (int)OrderStatus.SENDING ||
                    item.Status == (int)OrderStatus.FINSHED)
                {
                    return(false);
                }

                // Hidden List of Sign
                if (item.Status == (int)OrderStatus.RETURNED)
                {
                    WFMainDetail wfDtail = db.WFMainDetails.Where(i => i.WFMain.OrderCode == item.OrderCode && i.isFinished == 0 && i.NodeID == "").SingleOrDefault();
                    if (wfDtail != null)
                    {
                        wfDtail.isFinished = 1;
                        wfDtail.CheckDate  = DateTime.Now;
                    }
                }
                item.Status = (int)OrderStatus.DELETED;

                db.SaveChanges();
                return(true);
            }
            return(false);
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="o"></param>
        /// <param name="properties"></param>
        /// <returns></returns>
        public bool UpdateStatus(HardwareRequirement o, params System.Linq.Expressions.Expression <Func <HardwareRequirement, object> >[] properties)
        {
            var item = db.HardwareRequirements.Where(i => i.ID == o.ID || i.OrderCode == o.OrderCode).SingleOrDefault();

            if (item != null)
            {
                foreach (var propertie in properties)
                {
                    var lambda = (LambdaExpression)propertie;
                    MemberExpression memberExpression;
                    if (lambda.Body is UnaryExpression)
                    {
                        memberExpression = (MemberExpression)((UnaryExpression)lambda.Body).Operand;
                    }
                    else
                    {
                        memberExpression = (MemberExpression)lambda.Body;
                    }

                    string propertyName = memberExpression.Member.Name;
                    item.GetType().GetProperty(propertyName).SetValue(item, o.GetType().GetProperty(propertyName).GetValue(o));
                }
                db.SaveChanges();
            }
            else
            {
                return(false);
            }
            return(true);
        }
示例#3
0
        /// <summary>
        /// Insert Item:
        /// DeviceRegistration
        /// if OrderStatus was Save end Send then Insert WFMain to DB
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public string InsertItem(HardwareRequirement o, OrderStatus status, WFMain w)
        {
            using (TransactionScope transaction = new TransactionScope())
            {
                try
                {
                    if (o.ID.Length == 0 || o.ID == null)
                    {
                        o.ID = Guid.NewGuid().ToString();
                    }
                    if (o.Description == null)
                    {
                        o.Description = "";
                    }
                    if (o.Reason == null)
                    {
                        o.Reason = "";
                    }

                    if (o.HardwareRequirementDetails != null)
                    {
                        int sequence = 0;
                        foreach (HardwareRequirementDetail i in o.HardwareRequirementDetails)
                        {
                            sequence += 1;
                            i.ID      = Guid.NewGuid().ToString();
                            i.HardwareRequirementID = o.ID;
                            i.ItemNo = GetItemNo(sequence);
                            i.Temp1  = 0;
                        }
                    }
                    db.HardwareRequirements.Add(o);

                    // Check for sending?
                    if (status == OrderStatus.SENDING)
                    {
                        db.WFMains.Add(w);
                    }

                    db.SaveChanges();
                    transaction.Complete();
                    return(o.ID);
                }
                catch (Exception)
                {
                    transaction.Dispose();
                }
            }
            return("");
        }
示例#4
0
        /// <summary>
        /// Update Item
        /// </summary>
        /// <param name="o">to Update</param>
        /// <param name="status">OrderStatus</param>
        /// <param name="w">WFMainDetail</param>
        /// <param name="properties"></param>
        /// <returns></returns>
        public bool UpdateItem(HardwareRequirement o, Boolean isSaveDraff, Boolean isReturned, WFMainDetail w, params System.Linq.Expressions.Expression <Func <HardwareRequirement, object> >[] properties)
        {
            if (o.Description == null)
            {
                o.Description = "";
            }
            if (o.Reason == null)
            {
                o.Reason = "";
            }
            using (TransactionScope transaction = new TransactionScope())
            {
                try
                {
                    HardwareRequirement item = db.HardwareRequirements.Where(i => i.ID == o.ID || i.OrderCode == o.OrderCode).SingleOrDefault();
                    if (item != null)
                    {
                        foreach (var propertie in properties)
                        {
                            var lambda = (LambdaExpression)propertie;
                            MemberExpression memberExpression;
                            if (lambda.Body is UnaryExpression)
                            {
                                memberExpression = (MemberExpression)((UnaryExpression)lambda.Body).Operand;
                            }
                            else
                            {
                                memberExpression = (MemberExpression)lambda.Body;
                            }

                            string propertyName = memberExpression.Member.Name;
                            item.GetType().GetProperty(propertyName).SetValue(item, o.GetType().GetProperty(propertyName).GetValue(o));
                        }
                        if (!isSaveDraff)
                        {
                            item.Status = (int)DeviceRegistrationManager.OrderStatus.SENDING;
                        }

                        // Update  DeviceRegistrationDetail
                    }

                    // Xóa Device Registration Detail
                    List <HardwareRequirementDetail> lstDeviceDetail = db.HardwareRequirementDetails.Where(i => i.HardwareRequirementID == item.ID).ToList();
                    if (lstDeviceDetail.Count > 0)
                    {
                        foreach (HardwareRequirementDetail i in lstDeviceDetail)
                        {
                            db.HardwareRequirementDetails.Remove(i);
                        }
                    }
                    //Add DeviceRegistrationDetails
                    if (o.HardwareRequirementDetails != null)
                    {
                        int sequence = 0;
                        foreach (HardwareRequirementDetail i in o.HardwareRequirementDetails)
                        {
                            sequence += 1;
                            i.ID      = Guid.NewGuid().ToString();
                            i.HardwareRequirementID = o.ID;
                            i.ItemNo = GetItemNo(sequence);
                            db.HardwareRequirementDetails.Add(i);
                        }
                    }


                    if (!isSaveDraff)
                    {
                        if (isReturned)
                        {
                            WFMainDetail wfDtail = db.WFMainDetails.Where(i => i.WFMain.OrderCode == o.OrderCode && i.isFinished == 0 && i.NodeID == "").SingleOrDefault();
                            if (wfDtail != null)
                            {
                                wfDtail.isFinished = 1;
                                wfDtail.CheckDate  = DateTime.Now;
                            }
                        }
                        db.WFMainDetails.Add(w);
                    }
                    db.SaveChanges();
                    transaction.Complete();

                    return(true);
                }
                catch
                {
                    transaction.Dispose();
                    return(false);
                }
            }
        }