Beispiel #1
0
        void CollectThread_ReceiveLog(ReceiveDataInfo e)
        {
            var data = CVT.ByteToHexStr(e.PackagesBytes);

            SetRecText(string.Format("收到数据,ID:{0},长度:{1},数据:{2}", e.Sender, e.PackagesBytes.Length, data));
            SetLogText(string.Format("收到数据,ID:{0},长度:{1}", e.Sender, e.PackagesBytes.Length));
        }
Beispiel #2
0
        public ActionResult IgnorableCVTsCrud(IgnorableCVTsVM model)
        {
            if (model.oper == "add")
            {
                if (ModelState.IsValid)
                {
                    CVT cvtToAdd = new CVT
                    {
                        CVTS = model.CVT,
                        AssociatedFreeText    = model.AssociatedFreetext,
                        IsIgnorableInDelivery = true,
                        NewType      = model.NewType,
                        ExistingType = model.ExistingType
                    };
                    var existingcvt = db.CVT.Where(cvt => cvt.CVTS == model.CVT).FirstOrDefault();
                    if (existingcvt == null)
                    {
                        db.Entry(cvtToAdd).State = EntityState.Added;
                        db.SaveChanges();
                        return(Content("Created"));
                    }
                    else
                    {
                        return(Content("CVT already exist"));
                    }
                }
            }

            if (model.oper == "edit")
            {
                if (ModelState.IsValid)
                {
                    string id = HttpContext.Request.Params.Get("id");
                    if (id != null)
                    {
                        CVT cvtToEdit = db.CVT.Find(Convert.ToInt32(id));
                        cvtToEdit.CVTS = model.CVT;
                        cvtToEdit.AssociatedFreeText = model.AssociatedFreetext;
                        cvtToEdit.ExistingType       = model.ExistingType;
                        cvtToEdit.NewType            = model.NewType;
                        db.Entry(cvtToEdit).State    = EntityState.Modified;
                        db.SaveChanges();
                        return(Content("Updated"));
                    }
                }
            }

            if (model.oper == "del")
            {
                string id = HttpContext.Request.Params.Get("id");
                if (id != null)
                {
                    CVT cvtToEdit = db.CVT.Find(Convert.ToInt32(id));
                    db.CVT.Remove(cvtToEdit);
                    db.SaveChanges();
                    return(Content("Deleted"));
                }
            }
            return(Content("Invalid request"));
        }
Beispiel #3
0
        public ActionResult SaveIgnorableCVTs(string CVTText)
        {
            try
            {
                using (TransactionScope sc = new TransactionScope())
                {
                    if (!string.IsNullOrEmpty(CVTText))
                    {
                        List <string> cvts     = CVTText.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();
                        var           cvtTexts = cvts.Select(s => s.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[0]).GroupBy(s => s).ToList();

                        if (cvtTexts.Count == cvts.Count)
                        {
                            List <CVT> cvtsToAdd = new List <CVT>();
                            foreach (var cvt in cvts)
                            {
                                string cvttext            = string.Empty;
                                string AssociatedFreetext = string.Empty;
                                if (cvt.Contains("::"))
                                {
                                    cvttext            = cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[0];
                                    AssociatedFreetext = cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries).Count() > 1 ? cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[1] : string.Empty;
                                    if (cvttext.Equals(AssociatedFreetext))
                                    {
                                        return(Content($"CVT and Associated Freetext can't be same in {cvt}"));
                                    }
                                }
                                var cvtToAdd = new CVT
                                {
                                    CVTS = cvt.Contains("::") ? cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[0] : cvt,
                                    AssociatedFreeText    = cvt.Contains("::") && cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries).Count() > 1 ? cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[1] : string.Empty,
                                    IsIgnorableInDelivery = true
                                };
                                cvtsToAdd.Add(cvtToAdd);
                            }
                            var existingCVts = db.CVT.Where(cvt => cvt.IsIgnorableInDelivery);
                            db.CVT.RemoveRange(existingCVts);
                            db.CVT.AddRange(cvtsToAdd);
                        }
                        else
                        {
                            return(Content("CVTs Contains Duplicate Texts"));
                        }
                    }

                    db.SaveChanges();
                    sc.Complete();
                }
                return(Content("Success"));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                return(View("Error"));
            }
        }
Beispiel #4
0
        private CVT Map(CropVariety cropVariety)
        {
            var isoVariety = new CVT
            {
                B = cropVariety.Description,
            };

            isoVariety.A = isoVariety.GetIsoId(_cropVarietyIndex++);
            return(isoVariety);
        }
Beispiel #5
0
        /// <summary>
        /// 将读取的数据上传值服务器端后并未在上传日志中显示
        /// </summary>
        /// <param name="server"></param>
        /// <param name="communication"></param>
        /// <param name="device"></param>
        public void ShowMonitorUploadListView(IO_SERVER server, IO_COMMUNICATION communication, IO_DEVICE device, string uploadresult)
        {
            if (IOMonitorManager.IsBackRun)
            {
                return;
            }
            if (ucbReceive.Checked)
            {
                if (this.IsHandleCreated && listViewReceive.InvokeRequired)
                {
                    listViewReceive.BeginInvoke(new EventHandler(delegate
                    {
                        ListViewItem lvi = new ListViewItem(device.GetedValueDate.ToString());
                        lvi.SubItems.Add(server.SERVER_NAME);
                        lvi.SubItems.Add(communication.IO_COMM_NAME + "[" + communication.IO_COMM_LABEL + "]");
                        lvi.SubItems.Add(device.IO_DEVICE_NAME + "[" + device.IO_DEVICE_LABLE + "]");
                        lvi.SubItems.Add(uploadresult);
                        if (device.ReceiveBytes.Length > 0)
                        {
                            //将接收的数据转为16字节进行显示
                            lvi.SubItems.Add(CVT.ByteToHexStr(device.ReceiveBytes));
                        }
                        else
                        {
                            lvi.SubItems.Add("  ");
                        }


                        listViewReceive.Items.Insert(0, lvi);

                        if (this.ucLateReceiveSize.SelectedValue != null && this.ucLateReceiveSize.SelectedValue != "")
                        {
                            if (listViewReceive.Items.Count > int.Parse(this.ucLateReceiveSize.SelectedValue))
                            {
                                listViewReceive.Items.RemoveAt(listViewReceive.Items.Count - 1);
                            }
                        }
                    }));
                }
            }
        }
Beispiel #6
0
        private void Svr_ReceiveData(object sender, ZYBEventArgs e)
        {
            if (e == null)
            {
                return;
            }
            if (sender == null)
            {
                return;
            }
            if (e.DTU == null)
            {
                return;
            }
            lock (sender)
            {
                if (e.DTU != null)
                {
                    try
                    {
                        //注意此处传过来的ID是16位字符串
                        string id = e.DTU.ID;
                        //  接收的数据
                        Dtu_Data data = new Dtu_Data();
                        data.IP = e.DTU.IP;
                        data.ID = e.DTU.ID;
                        IO_DEVICE currentDevice = this.IODevices.Find(x => x.IO_DEVICE_ADDRESS == data.ID);
                        if (currentDevice == null)
                        {
                            return;
                        }
                        if (e.DTU.DtuID != "")
                        {
                            data.DtuID = e.DTU.DtuID;
                        }
                        else
                        {
                            data.DtuID = svr.InneridToId(int.Parse(e.DTU.ID));
                        }
                        data.IsOnline = e.DTU.IsOnline;
                        if (e.DTU.LoginTime != null)
                        {
                            data.LoginTime = e.DTU.LoginTime;
                        }
                        if (e.DTU.RefreshTime != null)
                        {
                            data.RefreshTime = e.DTU.RefreshTime;
                        }
                        data.PhoneNumber = e.DTU.PhoneNumber;

                        data.datas = e.DTU.DataByte;
                        data.Msg   = e.Msg;
                        //针对接收的数据做两种状态,读命令的应答和写命令的应答

                        if (data.datas.Length == 1)//判断是不是心跳包
                        {
                            if (CVT.ByteToHexStr(data.datas) == "fe")
                            {
                                this.DeviceStatus(this.IOServer, this.IOCommunication, currentDevice, null, "fe");
                            }
                        }

                        else if (data.datas.Length >= 5 && data.datas.Length != 21)           //判断是不是数据包
                        {
                            byte SlaveID = data.datas[0];                                     //设备号
                            byte Code    = data.datas[1];                                     //设备号

                            if (Code == 0x03 || Code == 0x04 || Code == 0x01 || Code == 0x02) //用户读取的数据
                            {
                                data.DataStatus = DataStatus.ReadData;
                                //将接收的数据转换成字符串并发送
                                this.ReceiveData(this.IOServer, this.IOCommunication, currentDevice, data.datas, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                            }
                            else if (Code > 0x80)//出现的错误信息
                            {
                                data.DataStatus = DataStatus.ReadData;
                                //执行操作
                            }
                            else if (Code == 0x06 || Code == 0x10)//表示用户写入的数据和
                            {
                                data.DataStatus = DataStatus.WriterData;
                                //执行操作
                            }
                        }
                    }
                    catch (Exception emx)
                    {
                        this.DeviceException(("error =10006," + emx.Message));
                    }
                }
            }
        }
Beispiel #7
0
        /// <summary>
        /// 返回服务器端接收的数据,此处主要将一个设备下的所有IO表数据统一获取后在一次性上传,
        /// </summary>
        /// <param name="server"></param>
        /// <param name="comm"></param>
        /// <param name="device"></param>
        /// <param name="para">为null,此参数不传递,根据用户驱动需要</param>
        /// <param name="receivedatas">接收的全部数据,要求在驱动中进行一次读取后返回</param>

        public static void CDriverDll_OnDataReceived(IO_SERVER server, IO_COMMUNICATION comm, IO_DEVICE device, byte[] receivedatas, string date, object sender)
        {
            //解析数据
            var analysisTask = Task.Run(() =>
            {
                try
                {
                    if (device != null && device.DeviceDrive != null)
                    {
                        //清理已经接收完成的数据
                        for (int i = 0; i < device.IOParas.Count; i++)
                        {
                            device.IOParas[i].IORealData = null;
                        }

                        device.GetedValueDate = DateTime.Now;
                        device.ReceiveBytes   = receivedatas;
                        #region 循环解析实时数据接收的每个参数

                        ScadaDeviceKernel Driver = (ScadaDeviceKernel)device.DeviceDrive;
                        for (int i = 0; i < device.IOParas.Count; i++)
                        {
                            #region 解析开关量 模拟量 字符常量 数据
                            try
                            {
                                if (device.IOParas[i].IO_POINTTYPE == "模拟量" || device.IOParas[i].IO_POINTTYPE == "开关量" || device.IOParas[i].IO_POINTTYPE == "字符串量")
                                {
                                    try
                                    {
                                        Driver.InitKernel(server, comm, device, device.IOParas[i], device.DriverInfo);
                                        IOData recdata = Driver.AnalysisData(server, comm, device, device.IOParas[i], receivedatas, Convert.ToDateTime(date), sender);
                                        if (recdata != null)
                                        {
                                            device.IOParas[i].IORealData = recdata;
                                        }
                                    }
                                    catch
                                    {
                                        device.IOParas[i].IORealData = null;
                                    }
                                }
                            }
                            catch
                            {
                            }
                            #endregion
                            #region 解析关系数据库值
                            try
                            {
                                if (device.IOParas[i].IO_POINTTYPE == "关系数据库值" && device.IOParas[i].IO_DATASOURCE.Trim() != "")
                                {
                                    RelationalDatabase rlation = new RelationalDatabase(device.IOParas[i].IO_DATASOURCE);
                                    string sql  = rlation.GetSql();
                                    string conn = rlation.ConnectString;
                                    switch (rlation.Database_Type)
                                    {
                                    case "SQL Server":
                                        {
                                            try
                                            {
                                                if (conn != "" && sql != "")
                                                {
                                                    DbHelperSQL sqlHealp      = new DbHelperSQL();
                                                    sqlHealp.connectionString = conn;
                                                    DataSet ds = sqlHealp.Query(sql);
                                                    if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                                                    {
                                                        device.IOParas[i].IORealData = new IOData();
                                                        device.IOParas[i].IORealData.CommunicationID = device.IO_COMM_ID;
                                                        device.IOParas[i].IORealData.ServerID        = device.IO_SERVER_ID;
                                                        device.IOParas[i].IORealData.ID           = device.IO_DEVICE_ID;
                                                        device.IOParas[i].IORealData.ParaName     = device.IOParas[i].IO_NAME;
                                                        device.IOParas[i].IORealData.ParaString   = device.IOParas[i].IO_PARASTRING;
                                                        device.IOParas[i].IORealData.ParaValue    = ds.Tables[0].Rows[0]["value"].ToString();
                                                        device.IOParas[i].IORealData.QualityStamp = QualityStamp.GOOD;
                                                        device.IOParas[i].IORealData.Date         = Convert.ToDateTime(ds.Tables[0].Rows[0]["datetime"].ToString());
                                                    }
                                                }
                                            }
                                            catch
                                            {
                                                device.IOParas[i].IORealData = null;
                                            }
                                        }
                                        break;

                                    case "ORACLE":
                                        {
                                            try
                                            {
                                                if (conn != "" && sql != "")
                                                {
                                                    DbHelperOra oracleHealp      = new DbHelperOra();
                                                    oracleHealp.connectionString = conn;
                                                    DataSet ds = oracleHealp.Query(sql);
                                                    if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                                                    {
                                                        device.IOParas[i].IORealData = new IOData();
                                                        device.IOParas[i].IORealData.CommunicationID = device.IO_COMM_ID;
                                                        device.IOParas[i].IORealData.ServerID        = device.IO_SERVER_ID;
                                                        device.IOParas[i].IORealData.ID           = device.IO_DEVICE_ID;
                                                        device.IOParas[i].IORealData.ParaName     = device.IOParas[i].IO_NAME;
                                                        device.IOParas[i].IORealData.ParaString   = device.IOParas[i].IO_PARASTRING;
                                                        device.IOParas[i].IORealData.ParaValue    = ds.Tables[0].Rows[0]["value"].ToString();
                                                        device.IOParas[i].IORealData.QualityStamp = QualityStamp.GOOD;
                                                        device.IOParas[i].IORealData.Date         = Convert.ToDateTime(ds.Tables[0].Rows[0]["datetime"].ToString());
                                                    }
                                                }
                                            }
                                            catch
                                            {
                                                device.IOParas[i].IORealData = null;
                                            }
                                        }
                                        break;

                                    case "MySql":
                                        {
                                            try
                                            {
                                                if (conn != "" && sql != "")
                                                {
                                                    DbHelperMySQL mysqlHealp    = new DbHelperMySQL();
                                                    mysqlHealp.connectionString = conn;
                                                    DataSet ds = mysqlHealp.Query(sql);
                                                    if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                                                    {
                                                        device.IOParas[i].IORealData = new IOData();
                                                        device.IOParas[i].IORealData.CommunicationID = device.IO_COMM_ID;
                                                        device.IOParas[i].IORealData.ServerID        = device.IO_SERVER_ID;
                                                        device.IOParas[i].IORealData.ID           = device.IO_DEVICE_ID;
                                                        device.IOParas[i].IORealData.ParaName     = device.IOParas[i].IO_NAME;
                                                        device.IOParas[i].IORealData.ParaString   = device.IOParas[i].IO_PARASTRING;
                                                        device.IOParas[i].IORealData.ParaValue    = ds.Tables[0].Rows[0]["value"].ToString();
                                                        device.IOParas[i].IORealData.QualityStamp = QualityStamp.GOOD;
                                                        device.IOParas[i].IORealData.Date         = Convert.ToDateTime(ds.Tables[0].Rows[0]["datetime"].ToString());
                                                        double d = 0;
                                                        if (double.TryParse(device.IOParas[i].IORealData.ParaValue, out d))
                                                        {
                                                            device.IOParas[i].IORealData.DataType = typeof(double);
                                                        }
                                                        else
                                                        {
                                                            device.IOParas[i].IORealData.DataType = typeof(string);
                                                        }
                                                    }
                                                }
                                            }
                                            catch
                                            {
                                                device.IOParas[i].IORealData = null;
                                            }
                                        }
                                        break;
                                    }
                                }
                            }
                            catch
                            {
                            }
                            #endregion
                            #region 解析计算值包含公式计算的

                            //

                            try
                            {
                                if (device.IOParas[i].IO_POINTTYPE == "计算值")
                                {
                                    if (device.IOParas[i].IO_FORMULA.Trim() != "")
                                    {
                                        device.IOParas[i].IORealData = new IOData();
                                        try
                                        {
                                            device.IOParas[i].IORealData.QualityStamp = QualityStamp.GOOD;
                                            device.IOParas[i].IORealData.Date         = DateTime.Now;
                                            device.IOParas[i].IORealData.ParaName     = device.IOParas[i].IO_NAME;
                                            device.IOParas[i].IORealData.DataType     = typeof(double);
                                            //替换关键字为数值
                                            string formula = device.IOParas[i].IO_FORMULA;
                                            foreach (IO_PARA para in device.IOParas)
                                            {
                                                if (device.IOParas[i].IO_POINTTYPE != "字符串量" && device.IOParas[i].IO_POINTTYPE != "计算值" && device.IOParas[i].IORealData != null)
                                                {
                                                    if (device.IOParas[i].IORealData.QualityStamp == QualityStamp.GOOD && device.IOParas[i].IORealData.ParaValue != "-9999" && device.IOParas[i].IORealData.ParaValue != "")
                                                    {
                                                        formula = formula.Replace(device.IOParas[i].IO_NAME, device.IOParas[i].IORealData.ParaValue);
                                                    }
                                                }
                                            }
                                            if (formula != "")
                                            {
                                                //解析数学公式
                                                device.IOParas[i].IORealData.ParaValue = AnalyzeCalculate.Calculate(device.IOParas[i].IO_FORMULA);
                                                double d = 0;
                                                if (double.TryParse(device.IOParas[i].IORealData.ParaValue, out d))
                                                {
                                                    device.IOParas[i].IORealData.DataType = typeof(double);
                                                }
                                                else
                                                {
                                                    device.IOParas[i].IORealData.DataType = typeof(string);
                                                }
                                            }

                                            else
                                            {
                                                device.IOParas[i].IORealData.ParaValue    = "-9999";
                                                device.IOParas[i].IORealData.QualityStamp = QualityStamp.BAD;
                                            }
                                        }
                                        catch
                                        {
                                            device.IOParas[i].IORealData.QualityStamp = QualityStamp.BAD;
                                            device.IOParas[i].IORealData.Date         = DateTime.Now;
                                            device.IOParas[i].IORealData.ParaName     = device.IOParas[i].IO_NAME;
                                        }
                                    }
                                    else
                                    {
                                        device.IOParas[i].IORealData = null;
                                    }
                                }
                            }
                            catch
                            {
                            }
                            #endregion
                            #region 进行量程转换
                            try
                            {
                                if (device.IOParas[i].IO_POINTTYPE == "模拟量")
                                {
                                    if (device.IOParas[i].IORealData != null && device.IOParas[i].IO_ENABLERANGECONVERSION == 1 && device.IOParas[i].IORealData.QualityStamp == QualityStamp.GOOD)
                                    {
                                        if (device.IOParas[i].IORealData.ParaValue != "" && device.IOParas[i].IORealData.ParaValue != "-9999")
                                        {
                                            string value = ConvertParaTypeValue(device.IOParas[i].GetParaValueType(), device.IOParas[i].IORealData.ParaValue, double.Parse(device.IOParas[i].IO_RANGEMAX), double.Parse(device.IOParas[i].IO_RANGEMIN), double.Parse(device.IOParas[i].IO_MAXVALUE), double.Parse(device.IOParas[i].IO_MINVALUE));
                                            device.IOParas[i].IORealData.ParaValue = value;
                                        }
                                    }
                                }
                            }
                            catch
                            {
                            }

                            #endregion

                            #region 常量值
                            try
                            {
                                if (device.IOParas[i].IO_POINTTYPE == "常量值")
                                {
                                    device.IOParas[i].IORealData = new IOData()
                                    {
                                        CommunicationID = device.IOParas[i].IO_COMM_ID,
                                        DataType        = typeof(string),
                                        Date            = device.GetedValueDate,
                                        ParaName        = device.IOParas[i].IO_NAME,
                                        ParaString      = device.IOParas[i].IO_PARASTRING,
                                        ParaValue       = device.IOParas[i].IO_INITALVALUE,
                                        QualityStamp    = QualityStamp.GOOD,
                                        ServerID        = device.IOParas[i].IO_SERVER_ID
                                    };
                                }
                            }
                            catch
                            {
                            }

                            #endregion
                        }
                        #endregion
                        #region 将解析后的数据上传到数据中心服务器上
                        IO_DEVICE newDevice = device.Copy();
                        try
                        {
                            //将接收到的数据保存到实时缓存,主要用于批量上传,提高传输效率
                            receiveRealCache.Push(new ReceiveCacheObject()
                            {
                                DataString = RealDataDBUtility.GetRealDataCacheString(device)
                            });
                            MonitorFormManager.ShowMonitorUploadListView(server, comm, device, "上传成功");
                        }
                        catch (Exception emx)
                        {
                            ThrowExceptionToMain(emx);
                        }
                        //在事件接收窗体中显示接收的采集数据
                        if (OnMonitorReceive != null)
                        {
                            OnMonitorReceive(server, comm, newDevice, receivedatas);
                        }

                        #endregion
                        #region 计算报警并上传
                        try
                        {
                            Task.Run(() =>
                            {
                                List <IO_PARAALARM> res = new List <IO_PARAALARM>();
                                //将接收到的数据保存到实时缓存,主要用于批量上传,提高传输效率
                                receiveRealCache.Push(new AlarmCacheObject()
                                {
                                    DataString = RealDataDBUtility.GetAlarmCacheString(device, out res)
                                });
                                for (int i = 0; i < res.Count; i++)
                                {
                                    MonitorFormManager.MonitorIODataAlarmShowView(server, comm, device, res[i], "上传成功");
                                }
                                res.Clear();
                                res = null;
                            });
                        }
                        catch (Exception emx)
                        {
                            ThrowExceptionToMain(emx);
                        }
                        #endregion
                    }
                }
                catch (Exception emx)
                {
                    ThrowExceptionToMain(emx);
                }
                if (receivedatas != null && receivedatas.Length > 0)
                {
                    AddLogToMainLog(device.IO_DEVICE_NAME + "接收到数据 DATA=" + CVT.ByteToHexStr(receivedatas));
                }
            });
        }
Beispiel #8
0
        public ActionResult SaveCVTFreeTexts()
        {
            try
            {
                var CVTsFromUI      = HttpContext.Request.Params.Get("cvtTexts");
                var freetextsFromUI = HttpContext.Request.Params.Get("FreeTexts");
                using (TransactionScope sc = new TransactionScope())
                {
                    if (!string.IsNullOrEmpty(CVTsFromUI))
                    {
                        List <string> cvts     = CVTsFromUI.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();
                        var           cvtTexts = cvts.Select(s => s.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[0]).GroupBy(s => s).ToList();

                        List <string> freetexts        = freetextsFromUI.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();
                        var           GroupedFreetexts = freetexts.GroupBy(s => s).ToList();
                        if (cvtTexts.Count == cvts.Count)
                        {
                            if (GroupedFreetexts.Count == freetexts.Count)
                            {
                                List <CVT> cvtsToAdd = new List <CVT>();
                                foreach (var cvt in cvts)
                                {
                                    string cvttext            = string.Empty;
                                    string AssociatedFreetext = string.Empty;
                                    if (cvt.Contains("::"))
                                    {
                                        cvttext            = cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[0];
                                        AssociatedFreetext = cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries).Count() > 1 ? cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[1] : string.Empty;
                                        if (cvttext.Equals(AssociatedFreetext))
                                        {
                                            return(Content($"CVT and Associated Freetext can't be same in {cvt}"));
                                        }
                                    }
                                    var cvtToAdd = new CVT
                                    {
                                        CVTS = cvt.Contains("::") ? cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[0] : cvt,
                                        AssociatedFreeText = cvt.Contains("::") && cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries).Count() > 1 ? cvt.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries)[1] : string.Empty
                                    };
                                    cvtsToAdd.Add(cvtToAdd);
                                }
                                List <FreeText> freetextsToAdd = new List <FreeText>();
                                foreach (var freetext in freetexts)
                                {
                                    freetextsToAdd.Add(new FreeText {
                                        FreeTexts = freetext
                                    });
                                }
                                var existingCVts      = db.CVT.Where(cvt => !cvt.IsIgnorableInDelivery);
                                var existingFreetexts = db.FreeText;
                                db.CVT.RemoveRange(existingCVts);
                                db.FreeText.RemoveRange(existingFreetexts);
                                db.CVT.AddRange(cvtsToAdd);
                                db.FreeText.AddRange(freetextsToAdd);
                            }
                            else
                            {
                                return(Content("Freetexts Contains Duplicate Texts"));
                            }
                        }
                        else
                        {
                            return(Content("CVTs Contains Duplicate Texts"));
                        }
                    }
                    db.SaveChanges();
                    sc.Complete();
                }
                return(RedirectToAction("CVTFreeTextMaster"));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                return(View("Error"));
            }
        }
Beispiel #9
0
 public void Setup()
 {
     _cvt = new CVT();
     _output = new StringBuilder();
     _xmlBuilder = XmlWriter.Create(_output);
 }