public async Task <List <ChartEntity> > Post([FromBody] ChartQuery chart)
        {
            try
            {
                IChartRepository <ChartEntity> Respository = new ChartRepository <ChartEntity>(config);
                ChartService <ChartEntity>     service     = new ChartService <ChartEntity>();
                if (chart.queryParameter == "findbyuserid")
                {
                    var charts = await Respository.GetItemsAsync(d => d.userId == chart.userId && d.userId != null && d.isActive == true, "Chart");

                    return(charts.ToList());
                }
                //else if (chart.queryParameter == "findbydate")
                //{
                //    var charts = await Respository.GetItemsAsync(d => d.date == chart.date && d.isActive == true && d.isAvailable == true, "chartMaster");
                //    return charts.ToList();
                //}
                else
                {
                    return(await service.CreateItemAsync(chart, config));

                    //ChartEntity newchart = new ChartEntity();
                    //newchart.id = null;
                    //newchart.name = chart.name;
                    //newchart.remarks = chart.remarks;
                    //newchart.mailcontent = chart.mailcontent;
                    //newchart.mailsubject = chart.mailsubject;
                    //newchart.userId = chart.userId;
                    //newchart.email = chart.email;
                    //newchart.phone = chart.phone;
                    //newchart.username = chart.username;
                    //newchart.isActive = chart.isActive;
                    //newchart.createdBy = chart.createdBy;
                    //newchart.createdDate = chart.createdDate;
                    //newchart.modifiedBy = chart.modifiedBy;
                    //newchart.modifiedDate = chart.modifiedDate;
                    //newchart.chartAttachments = chart.chartAttachments;

                    //var cht = await Respository.CreateItemAsync(newchart, "Chart");
                    //List<ChartEntity> chtList = new List<ChartEntity>();
                    //return chtList;
                }
            }
            catch
            {
                List <ChartEntity> chtList = new List <ChartEntity>();
                return(chtList);
            }
        }
        public IHttpActionResult SingleTrendChart(ChartQuery note)
        {
            JsonObject json = new JsonObject();

            if (Convert.ToDateTime(note.BeginTime) >= Convert.ToDateTime(note.EndTime))
            {
                json["Error"] = "Begin Time <End Time";
                return(Ok(json));;
            }
            try
            {
                int AB = Convert.ToInt32(note.AB);
                if (note.Isdelegate)
                {
                    AB = 4;
                }


                ChartCreater cc = new ChartCreater();
                int          i;
                i = cc.FillData(note.SampleName, note.LOT_NO, note.Line, note.Property, Convert.ToDateTime(note.BeginTime), Convert.ToDateTime(note.EndTime), AB);
                TrendChart dic = new TrendChart();
                cc.SingleTrendChart(ref dic);

                #region red
                decimal[][] red = null;
                if (dic.Number != null && dic.testScores != null && dic.Number.Length != 0 && dic.testScores.Length != 0)
                {
                    red = new decimal[dic.Number.Length][];
                    for (int r = 0; r < dic.Number.Length; r++)
                    {
                        red[r]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        red[r][0] = dic.Number[r];
                        red[r][1] = dic.testScores[r];
                    }
                    json["RedPoint"] = red;
                }
                #endregion

                #region 超线的点1
                if (dic.overCLNumbers != null && dic.overCLScores != null &&
                    dic.overCLNumbers.Length != 0 && dic.overCLScores.Length != 0 && dic.overCLNumbers.Length == dic.overCLScores.Length)
                {
                    decimal[][] over1 = new decimal[dic.overCLNumbers.Length][];
                    for (int r = 0; r < dic.overCLNumbers.Length; r++)
                    {
                        over1[r]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        over1[r][0] = dic.overCLNumbers[r];
                        over1[r][1] = dic.overCLScores[r];
                    }
                    json["Over1"] = over1;
                }
                #endregion

                #region 超线的点2
                if (dic.overNumbers != null && dic.overTestScores != null &&
                    dic.overNumbers.Length != 0 && dic.overTestScores.Length != 0 && dic.overNumbers.Length == dic.overTestScores.Length)
                {
                    decimal[][] over2 = new decimal[dic.overNumbers.Length][];
                    for (int r = 0; r < dic.overNumbers.Length; r++)
                    {
                        over2[r]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        over2[r][0] = dic.overNumbers[r];
                        over2[r][1] = dic.overTestScores[r];
                    }
                    json["Over2"] = over2;
                }
                #endregion
                json["ChartData"]    = dic;
                json["ChartCreater"] = cc;
                List <decimal> maxs = new List <decimal>();
                List <decimal> mins = new List <decimal>();
                if (dic.testScores != null && dic.testScores.Length != 0)
                {
                    maxs.Add(dic.testScores.Max());
                    mins.Add(dic.testScores.Min());
                }
                if (dic.overCLScores != null && dic.overCLScores.Length != 0)
                {
                    maxs.Add(dic.overCLScores.Max());
                    mins.Add(dic.overCLScores.Min());
                }
                if (dic.overTestScores != null && dic.overTestScores.Length != 0)
                {
                    maxs.Add(dic.overTestScores.Max());
                    mins.Add(dic.overTestScores.Min());
                }
                json["Model"]    = dic;
                json["maxValue"] = GetMinValueChart(dic, maxs.Max(), mins.Min(), true);
                json["minValue"] = GetMinValueChart(dic, maxs.Max(), mins.Min(), false);
                json["maxPoint"] = maxs.Max();
                json["minPoint"] = mins.Min();

                return(Ok(json));
            }
            catch (Exception e)
            {
                json["Error"] = e.Message + "-" + e.StackTrace;
                return(Ok(json));
            }
        }
        public IHttpActionResult MRChart(ChartQuery note)
        {
            JsonObject json = new JsonObject();

            if (Convert.ToDateTime(note.BeginTime) >= Convert.ToDateTime(note.EndTime))
            {
                json["Error"] = "Begin Time <End Time";
                return(Ok(json));;
            }
            try
            {
                int AB = Convert.ToInt32(note.AB);
                if (note.Isdelegate)
                {
                    AB = 4;
                }

                ChartCreater cc = new ChartCreater();
                int          i;
                i = cc.FillData(note.SampleName, note.LOT_NO, note.Line, note.Property, Convert.ToDateTime(note.BeginTime), Convert.ToDateTime(note.EndTime), AB);
                TrendChart dic = new TrendChart();
                cc.IChart(ref dic);
                json["Model"] = dic;
                #region 趋势图

                if (dic.Number != null && dic.testScores != null && dic.Number.Length != 0 && dic.testScores.Length != 0)
                {
                    decimal[][] red = new decimal[dic.Number.Length][];
                    for (int r = 0; r < dic.Number.Length; r++)
                    {
                        red[r]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        red[r][0] = dic.Number[r];
                        red[r][1] = dic.testScores[r];
                    }
                    json["Trend"] = red;

                    List <decimal> allLines = new List <decimal>();
                    if (dic.USL != decimal.MinValue)
                    {
                        allLines.Add(dic.USL);
                    }
                    if (dic.LSL != decimal.MinValue)
                    {
                        allLines.Add(dic.LSL);
                    }
                    if (dic.CL != decimal.MinValue)
                    {
                        allLines.Add(dic.CL);
                    }
                    if (dic.UCL != decimal.MinValue)
                    {
                        allLines.Add(dic.UCL);
                    }
                    if (dic.LCL != decimal.MinValue)
                    {
                        allLines.Add(dic.LCL);
                    }
                    if (dic.LUCL != decimal.MinValue)
                    {
                        allLines.Add(dic.LUCL);
                    }
                    if (dic.LLCL != decimal.MinValue)
                    {
                        allLines.Add(dic.LLCL);
                    }
                    if (dic.X != decimal.MinValue)
                    {
                        allLines.Add(dic.X);
                    }

                    #region 最大值的点
                    if (red != null && red.Length != 0)
                    {
                        decimal[][] maxSpots = new decimal[2][];
                        maxSpots[0]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        maxSpots[0][0] = red[0][0];
                        maxSpots[0][1] = allLines.Max();
                        maxSpots[1]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        maxSpots[1][0] = red[red.Length - 1][0];
                        maxSpots[1][1] = allLines.Max();

                        json["MaxSpots"] = maxSpots;
                    }
                    #endregion

                    #region 最小值的点
                    if (red != null && red.Length != 0)
                    {
                        decimal[][] minSpots = new decimal[2][];
                        minSpots[0]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        minSpots[0][0] = red[0][0];
                        minSpots[0][1] = allLines.Min();
                        minSpots[1]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        minSpots[1][0] = red[red.Length - 1][0];
                        minSpots[1][1] = allLines.Min();

                        json["MinSpots"] = minSpots;
                    }
                    #endregion
                }
                #endregion

                #region 超线的点1
                if (dic.overCLNumbers != null && dic.overCLScores != null &&
                    dic.overCLNumbers.Length != 0 && dic.overCLScores.Length != 0 && dic.overCLNumbers.Length == dic.overCLScores.Length)
                {
                    decimal[][] over1 = new decimal[dic.overCLNumbers.Length][];
                    for (int r = 0; r < dic.overCLNumbers.Length; r++)
                    {
                        over1[r]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        over1[r][0] = dic.overCLNumbers[r];
                        over1[r][1] = dic.overCLScores[r];
                    }
                    json["Over1"] = over1;
                }
                #endregion

                #region 超线的点2
                if (dic.overNumbers != null && dic.overTestScores != null &&
                    dic.overNumbers.Length != 0 && dic.overTestScores.Length != 0 && dic.overNumbers.Length == dic.overTestScores.Length)
                {
                    decimal[][] over2 = new decimal[dic.overNumbers.Length][];
                    for (int r = 0; r < dic.overNumbers.Length; r++)
                    {
                        over2[r]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        over2[r][0] = dic.overNumbers[r];
                        over2[r][1] = dic.overTestScores[r];
                    }

                    json["Over2"] = over2;
                    //ViewBag.Over2 = over2;
                }
                #endregion

                #region MRChart
                TrendChart dicR = new TrendChart();
                cc.MRChart(ref dicR);

                #region 趋势图
                if (dicR.Number != null && dicR.testScores != null &&
                    dicR.Number.Length != 0 && dicR.testScores.Length != 0 && dicR.Number.Length == dicR.testScores.Length)
                {
                    decimal[][] trendR = new decimal[dicR.Number.Length][];
                    for (int r = 0; r < dicR.Number.Length; r++)
                    {
                        trendR[r]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        trendR[r][0] = dicR.Number[r];
                        trendR[r][1] = dicR.testScores[r];
                    }

                    json["TrendR"] = trendR;
                    List <decimal> allLinesMR = new List <decimal>();
                    if (dicR.UCL != decimal.MinValue)
                    {
                        allLinesMR.Add(dicR.UCL);
                    }
                    if (dicR.LCL != decimal.MinValue)
                    {
                        allLinesMR.Add(dicR.LCL);
                    }
                    if (dicR.MR != decimal.MinValue)
                    {
                        allLinesMR.Add(dicR.MR);
                    }
                    #region MR图最大值的点
                    if (trendR != null && trendR.Length != 0)
                    {
                        decimal[][] maxSpotsMR = new decimal[2][];
                        maxSpotsMR[0]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        maxSpotsMR[0][0] = trendR[0][0];
                        maxSpotsMR[0][1] = allLinesMR.Max();
                        maxSpotsMR[1]    = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        maxSpotsMR[1][0] = trendR[trendR.Length - 1][0];
                        maxSpotsMR[1][1] = allLinesMR.Max();

                        json["MaxSpotsMR"] = maxSpotsMR;
                    }
                    #endregion

                    #region MR图最小值的点
                    if (trendR != null && trendR.Length != 0)
                    {
                        decimal[][] minSpotsMR = new decimal[2][];
                        minSpotsMR[0]      = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        minSpotsMR[0][0]   = trendR[0][0];
                        minSpotsMR[0][1]   = allLinesMR.Min();
                        minSpotsMR[1]      = (decimal[])Array.CreateInstance(typeof(decimal), 2);
                        minSpotsMR[1][0]   = trendR[trendR.Length - 1][0];
                        minSpotsMR[1][1]   = allLinesMR.Min();
                        json["MinSpotsMR"] = minSpotsMR;
                    }
                    #endregion
                }
                #endregion

                json["DicR"] = dicR;
                #endregion
                json["ChartCreater"] = cc;

                return(Ok(json));
            }
            catch (Exception e)
            {
                json["Error"] = e.Message + "-" + e.StackTrace;
                return(Ok(json));
            }
        }
Example #4
0
        public async Task <List <ChartEntity> > CreateItemAsync(ChartQuery chart, IConfiguration _config)
        {
            try
            {
                BlobStorageService objBlobService  = new BlobStorageService(_config);
                EmailService       objEmailService = new EmailService(_config);

                List <Attachment> attachments = new List <Attachment>();
                IChartRepository <ChartEntity> Respository = new ChartRepository <ChartEntity>(_config);


                ChartEntity newchart = new ChartEntity();
                newchart.id               = null;
                newchart.name             = chart.name;
                newchart.remarks          = chart.remarks;
                newchart.mailcontent      = chart.mailcontent;
                newchart.mailsubject      = chart.mailsubject;
                newchart.chartAttachments = chart.chartAttachments;
                newchart.userId           = chart.userId;
                newchart.email            = chart.email;
                newchart.phone            = chart.phone;
                newchart.username         = chart.username;
                newchart.isActive         = chart.isActive;
                newchart.createdBy        = chart.createdBy;
                newchart.createdDate      = chart.createdDate;
                newchart.modifiedBy       = chart.modifiedBy;
                newchart.modifiedDate     = chart.modifiedDate;

                // add base64 image to blob
                if (newchart.chartAttachments.Count() > 0)
                {
                    newchart.chartAttachments.ForEach(x =>
                    {
                        string[] strName = x.Name.Split('.');
                        //x.Path = newchart.userId + "/" + x.uId + "." + strName[strName.Length - 1];
                        //byte[] bytes = Encoding.ASCII.GetBytes(x.Base64String);

                        // upload to blob
                        //objBlobService.UploadFileToBlob(x.ContainerName, newchart.userId + "/" + x.uId + "." + strName[strName.Length - 1], Encoding.ASCII.GetBytes(x.Base64String), x.ContentType);

                        // add attachments
                        attachments.Add(new Attachment {
                            Content = x.Base64String, Type = x.ContentType, Filename = x.Name, Disposition = "attachment", ContentId = "chart"
                        });
                    });
                }


                var cht = await Respository.CreateItemAsync(newchart, "Chart");

                if (cht != null)
                {
                    // send Mail
                    var response = objEmailService.SendEmailAsync(newchart.mailsubject, newchart.email, "New Chart from Holistic Fitness", newchart.mailcontent, attachments);
                }


                List <ChartEntity> chtList = new List <ChartEntity>();
                return(chtList);
            }

            catch (Exception ex)
            {
                List <ChartEntity> chtList = null;
                return(chtList);
            }
        }