Example #1
0
        public Output GetOutput()
        {
            var output = new Output();

            output.SumResult = Sums.Sum() * K;

            var multiple = 1;

            foreach (var mul in Muls)
            {
                multiple *= mul;
            }
            output.MulResult = multiple;

            var list = new List <decimal>();

            list.AddRange(Sums.OrderBy(x => x));
            foreach (var mul in Muls.OrderByDescending(x => x))
            {
                list.Add(Convert.ToDecimal(mul));
            }

            /*var sorted = list.OrderBy(x => x);
             * output.SortedInputs = sorted.ToArray();*/
            output.SortedInputs = list.ToArray();

            return(output);
        }
Example #2
0
        public Response <Sums> Add([FromBody] AddDto add)
        {
            return(Extension.Try <Sums>(() =>
            {
                string TrackingId = null;
                string calculations = null;

                Sums sum = this.serviceCalculators.Add(add.Addends);

                //If a 'TrackingId’ was provided, the server should store this request’s details inside it’s
                //journal, indexed by the given Id.

                TrackingId = ValidateTrackingId();

                if (!string.IsNullOrEmpty(TrackingId))
                {
                    foreach (int num in add.Addends)
                    {
                        calculations += num + "+";
                    }

                    Operations operation = new Operations()
                    {
                        Id = TrackingId,
                        Operation = "Sum",
                        Date = DateTime.UtcNow.ToString("s") + "Z",
                        Calculation = string.Format("{0}", calculations + "=" + sum.Sum).Replace("+=", "=")
                    };

                    this.serviceCalculators.SaveJournal(operation);
                }
                return sum;
            }, _logger));
        }
Example #3
0
        public void SumRangeTestStartAtZero()
        {
            int manualCalculation = _manualCalculateSumRange(0, 100);
            int result            = Sums.SumRange(0, 100);

            Assert.AreEqual(manualCalculation, result);
        }
Example #4
0
        public void SumRangeTestStartAtOne()
        {
            int manualCalculation = _manualCalculateSumRange(0, 100);

            // The sum from 0 to N should equal sum from 1 to N
            Assert.AreEqual(manualCalculation, Sums.SumRange(1, 100));
        }
Example #5
0
        public void SumRangeTestStartAtRandom()
        {
            int manualCalculation = _manualCalculateSumRange(_start, _end);
            int result            = Sums.SumRange(_start, _end);

            Assert.AreEqual(result, manualCalculation);
        }
        public VismaEntrySumViewModel(Dictionary <int, double> sumEntries)
        {
            SumEntries = sumEntries;

            // Starts by creating two standard textboxes which contains the "ID" text and the "Sum" text at the start of every row of sums.
            Ids.Add(new TextBox
            {
                Text       = "Visma ID",
                FontWeight = FontWeights.Bold,
                Width      = 60,
                Background = Brushes.WhiteSmoke,
                HorizontalContentAlignment = HorizontalAlignment.Center,
                IsTabStop = false
            });

            Sums.Add(new TextBox
            {
                Text       = "Sum",
                FontWeight = FontWeights.Bold,
                Width      = 60,
                Background = Brushes.WhiteSmoke,
                HorizontalContentAlignment = HorizontalAlignment.Center,
                IsTabStop = false
            });

            // Then it generates the textboxes containing the sum and id pairs based on the dictionary that was sent.
            GenerateTextBoxes();
        }
        public IActionResult Add(Sums sums)
        {
            try
            {
                // Methods
                IMethods methods = new Methods();
                methods.GetAddResults(sums);

                // If have tracking-id, save log
                _logOperations.SetOperationsLog(Request.Headers["X-Evi-Tracking-Id"], new Operations()
                {
                    Calculation = "Sum", Operation = String.Format(Helpers.OperationString.ConvertArrayInText(sums.Addends, " + "), String.Empty, sums.Total)
                });

                _logs.SetLogs(DateTime.Now.ToString("dd/MM/yyyy"), JsonConvert.SerializeObject(new { Type = "Success", User = Request.Headers["X-Evi-Tracking-Id"], EntryData = JsonConvert.SerializeObject(sums.Addends), Operation = new Operations()
                                                                                                     {
                                                                                                         Calculation = "Sum", Operation = String.Format(Helpers.OperationString.ConvertArrayInText(sums.Addends, " + "), String.Empty, sums.Total)
                                                                                                     } }));

                return(Ok(new { Sum = sums.Total }));
            }
            catch (Exception ex)
            {
                Errors error = new Errors
                {
                    ErrorMessage = ex.Message,
                    ErrorCode    = "Internal Server Error",
                    ErrorStatus  = 400
                };

                _logs.SetLogs(DateTime.Now.ToString("dd/MM/yyyy"), JsonConvert.SerializeObject(new { Type = "Error", User = Request.Headers["X-Evi-Tracking-Id"], EntryData = JsonConvert.SerializeObject(sums.Addends), Operation = error }));

                return(BadRequest(error));
            }
        }
        private void GenerateTextBoxes()
        {
            foreach (KeyValuePair <int, double> entry in SumEntries)
            {
                #region Create the textbox standard
                var idTextbox  = new TextBox();
                var sumTextbox = new TextBox();
                idTextbox.Width = sumTextbox.Width = 60;
                idTextbox.HorizontalContentAlignment = sumTextbox.HorizontalContentAlignment = HorizontalAlignment.Center;

                idTextbox.Background  = Brushes.WhiteSmoke;
                sumTextbox.Background = Brushes.WhiteSmoke;
                #endregion

                // Adds the text to the textboxes.
                idTextbox.Text  = entry.Key.ToString();
                sumTextbox.Text = entry.Value.ToString();

                // Makes them not table.
                idTextbox.IsTabStop  = false;
                sumTextbox.IsTabStop = false;

                // Make them readonly
                idTextbox.IsReadOnly  = true;
                sumTextbox.IsReadOnly = true;

                // Adds them to the collections.
                Ids.Add(idTextbox);
                Sums.Add(sumTextbox);
            }
        }
        private void AnswerButton_Click(object sender, EventArgs e)
        {
            Sums test = new Sums();

            int res = test.multiplynumbers(5, 2);

            answerText.Text = res.ToString();
        }
Example #10
0
 public Output CreateOutput()
 {
     return(new Output
     {
         SumResult = Sums.Sum() * K,
         MulResult = Muls.Aggregate((a, b) => a * b),
         SortedInputs = Sums.Concat(Muls.Select(a => (decimal)a)).OrderBy(x => x).ToArray()
     });
 }
Example #11
0
        private static void Add(string clientID)
        {
            int numberOfElements = QuantityOfNumbers();

            Sums sums = new Sums();

            sums.Addends = GetListOfElements(numberOfElements).ToArray();

            IService _service = new Service();

            _service.Add(sums, clientID);
        }
Example #12
0
 /// <summary>
 /// Applies the effect by rendering it onto the target bitmap.
 /// </summary>
 /// <param name="source">The source bitmap.</param>
 /// <param name="target">The target bitmap.</param>
 public override void DrawImage(Bitmap source, Bitmap target)
 {
     if (source == null)
     {
         throw new ArgumentNullException("source");
     }
     if (target == null)
     {
         throw new ArgumentNullException("target");
     }
     if (source.Size != target.Size)
     {
         throw new ArgumentException("The source bitmap and the target bitmap must be the same size.");
     }
     using (var graphics = Graphics.FromImage(target))
     {
         graphics.PageUnit = GraphicsUnit.Pixel;
         for (int x = 0; x < source.Width; x += this.BlockSize)
         {
             for (int y = 0; y < source.Height; y += this.BlockSize)
             {
                 var sums = new Sums();
                 for (int xx = 0; xx < this.BlockSize; ++xx)
                 {
                     for (int yy = 0; yy < this.BlockSize; ++yy)
                     {
                         if (x + xx >= source.Width || y + yy >= source.Height)
                         {
                             continue;
                         }
                         var color = source.GetPixel(x + xx, y + yy);
                         sums.A += color.A;
                         sums.R += color.R;
                         sums.G += color.G;
                         sums.B += color.B;
                         sums.T++;
                     }
                 }
                 var average = Color.FromArgb(
                     sums.A / sums.T,
                     sums.R / sums.T,
                     sums.G / sums.T,
                     sums.B / sums.T);
                 using (var brush = new SolidBrush(average))
                 {
                     graphics.FillRectangle(brush, x, y, (x + this.BlockSize), (y + this.BlockSize));
                 }
             }
         }
     }
 }
Example #13
0
        public Output DoOutPut()
        {
            var output = new Output
            {
                SumResult    = Sums.Sum() * K,
                MulResult    = Muls.Aggregate((item, current) => item * current),
                SortedInputs = Sums
                               .Concat(Muls.Select(x => (decimal)x))
                               .OrderBy(x => x)
                               .ToArray()
            };

            return(output);
        }
Example #14
0
        public Graph(int[][] accessMatrix, double[][] costMatrix)
        {
            AccessMatrix = accessMatrix.Select(m => m.ToList()).ToList();
            CostMatrix   = costMatrix.Select(m => m.ToList()).ToList();
            Vertices     = AccessMatrix.Count;

            Ways      = GetWays();
            Sums      = GetSums(Ways);
            IndexCrit = Sums.FindIndex(s => s == Sums.Max());
            Crit      = Sums.Max();
            Budgets   = Sums.ToList();
            var max = Sums.Max();

            Budgets = Budgets.Select(b => max - b).ToList();
        }
Example #15
0
        /// <summary>
        /// This method serves UC-­CALC-­ADD external interface
        /// </summary>
        /// <param name="Addends">the input of the arithmetic operation.</param>
        /// <returns>the arithmetic operation result</returns>
        public Sums Add(List <int> Addends)
        {
            Sums sum = new Sums();

            try
            {
                sum.Sum = Addends.Sum();
            }
            catch (Exception ex)
            {
                throw new DataException("Error dao Add.", ex);
            }

            return(sum);
        }
Example #16
0
            public void Add(Sums what)
            {
                if (!fact.EqualTo(what.fact))
                {
                    System.Diagnostics.Debug.Assert(false, "PartialSums.Sums.Add: instances of PartialSums.Factory must be equal");
                }
                var a = this.items;
                var b = what.items;

                for (int i = fact.itemsCount - 1; i >= 0; i--)
                {
                    a[i].SumValues  += b[i].SumValues;
                    a[i].SumWeights += b[i].SumWeights;
                }
            }
Example #17
0
        public void AddResultsTest(object[] values, string expected)
        {
            try
            {
                string[] arrayString = Array.ConvertAll <object, string>(values, CalculatorService.Server.Helpers.Objects.ConvertObjectToString);

                Sums sums = new Sums
                {
                    Addends = arrayString
                };

                new CalculatorService.Server.Objects.Methods().GetAddResults(sums);

                Assert.AreEqual(Convert.ToDouble(expected), sums.Total);
            }
            catch (Exception ex)
            {
                Assert.AreEqual(expected, ex.Message);
            }
        }
Example #18
0
        public void GetAddResults(Sums sums)
        {
            try
            {
                // Check if the values are numbers
                var allNumbers = CalculatorService.Server.Helpers.Numbers.AllNumbers(sums.Addends);
                if (allNumbers)
                {
                    var valuesToOperate = CalculatorService.Server.Helpers.Numbers.ConvertStringArrayToDoubleArray(sums.Addends);

                    var result = valuesToOperate.Sum(x => x);

                    sums.Total = result;
                }
                else
                {
                    throw new Exception("Some of the elements are not numerics");
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public Activator(Menu attachToMenu)
        {
            AMenu = attachToMenu;

            AMenu = MainMenu.AddMenu("Aka´s Activator", "AkasActivator");
            AMenu.Add("Combo", new CheckBox("Use Items in Combo"));
            AMenu.Add("Harass", new CheckBox("Use Items in Harass"));
            AMenu.Add("LaneClear", new CheckBox("Use Items in LaneClear"));
            AMenu.Add("JungleClear", new CheckBox("Use Items in JungleClear"));
            AMenu.Add("Flee", new CheckBox("Use Items in Flee"));
            Offensive = AMenu.AddSubMenu("Offensive", "Offensive");
            Offensive.AddGroupLabel("Offensive Items");
            Offensive.AddLabel("Blade Of The Ruined King");
            Offensive.Add("botrkManager", new CheckBox("Blade Of The Ruined King"));
            Offensive.Add("botrkManagerMinMeHP", new Slider("Self HP %", 80));
            Offensive.Add("botrkManagerMinEnemyHP", new Slider("Enemy HP HP %", 80));
            Offensive.AddLabel("Cutlass");
            Offensive.Add("cutlassManager", new CheckBox("Cutlass"));
            Offensive.Add("cutlassManagerMinMeHP", new Slider("Self HP %", 80));
            Offensive.Add("cutlassManagerMinEnemyHP", new Slider("Enemy HP HP %", 80));

            if (Player.Instance.IsMelee)
            {
                Offensive.AddLabel("Tiamat");
                Offensive.Add("tiamatManager", new CheckBox("Use Tiamat"));
                Offensive.Add("tiamatManagerMinMeHP", new Slider("Self HP %", 99));
                Offensive.Add("tiamatManagerMinEnemyHP", new Slider("Enemy HP HP %", 99));
                Offensive.AddLabel("Hydra");
                Offensive.Add("hydraManager", new CheckBox("Use Hydra"));
                Offensive.Add("hydraManagerMinMeHP", new Slider("Self HP %", 99));
                Offensive.Add("hydraManagerMinEnemyHP", new Slider("Enemy HP HP %", 99));
            }

            Offensive.AddLabel("Gunblade");
            Offensive.Add("gunbladeManager", new CheckBox("Use Gunblade"));
            Offensive.Add("gunbladeManagerMinMeHP", new Slider("Self HP %", 99));
            Offensive.Add("gunbladeManagerMinEnemyHP", new Slider("Enemy HP HP %", 99));
            Offensive.AddLabel("GhostBlade");
            Offensive.Add("ghostbladeManager", new CheckBox("Use GhostBlade"));
            Offensive.Add("ghostbladeManagerMinMeHP", new Slider("Self HP %", 99));
            Offensive.Add("ghostbladeManagerMinEnemyHP", new Slider("Enemy HP HP %", 99));

            Potions = AMenu.AddSubMenu("Potions", "potions");
            Potions.AddGroupLabel("Potion Items");
            Potions.Add("healthPotionManager", new CheckBox("Health Potion"));
            Potions.Add("healthPotionManagerMinMeHP", new Slider("Min HP %", 65));
            Potions.AddSeparator();
            Potions.Add("biscuitPotionManager", new CheckBox("Biscuit"));
            Potions.Add("biscuitPotionManagerMinMeHP", new Slider("Min HP %", 65));
            Potions.AddSeparator();
            Potions.Add("refillPotManager", new CheckBox("Refill Potion"));
            Potions.Add("refillPotManagerMinMeHP", new Slider("Min HP %", 60));
            Potions.AddSeparator();
            Potions.Add("corruptpotManager", new CheckBox("Corrupt Potion"));
            Potions.Add("corruptpotManagerMinMeHP", new Slider("Min HP %", 60));
            Potions.Add("corruptpotManagerMinMeMana", new Slider("Min Mana %", 30));
            Potions.AddSeparator();
            Potions.Add("huntersPotManager", new CheckBox("Hunter's Potion"));
            Potions.Add("huntersPotManagerMinMeHP", new Slider("Min HP %", 60));
            Potions.Add("huntersPotManagerMinMeMana", new Slider("Min Mana %", 30));

            Qss = AMenu.AddSubMenu("Qss", "qss");
            Qss.AddGroupLabel("Qss Settings");
            Qss.Add("Polymorph", new CheckBox("Polymorph"));
            Qss.Add("Stun", new CheckBox("Stun"));
            Qss.Add("Taunt", new CheckBox("Taunt"));
            Qss.Add("Knockup", new CheckBox("Knock-up"));
            Qss.Add("Fear", new CheckBox("Fear"));
            Qss.Add("Snare", new CheckBox("Snare"));
            Qss.Add("Slow", new CheckBox("Slow"));
            Qss.Add("Blind", new CheckBox("Blind"));
            Qss.Add("Silence", new CheckBox("Silence"));
            Qss.Add("Charm", new CheckBox("Charm"));
            Qss.Add("Suppression", new CheckBox("Suppression"));
            Qss.Add("delay", new Slider("Activation Delay", 1000, 0, 2000));
            Qss.AddSeparator();
            Qss.AddLabel("Cleanse Items / Summoner Spell");
            Qss.Add("mikaelsCleanser", new CheckBox("Mikael's Cruicble"));
            Qss.Add("mercurialScimitarCleanser", new CheckBox("Mercurial Scimitar"));
            Qss.Add("quicksilverSashCleanser", new CheckBox("Quicksilver Sash"));
            Qss.Add("summonerSpellCleanse", new CheckBox("Summoner Cleanse"));

            Defensive = AMenu.AddSubMenu("Defensive Items", "defmenuactiv");
            Defensive.AddGroupLabel("Shield/Heal Items (self)");
            Defensive.Add("Archangels_Staff", new CheckBox("Serahph's Embrace"));
            Defensive.AddGroupLabel("Shield/Heal Items (ally/self)");
            Defensive.Add("Mikaels_Crucible_Heal", new CheckBox("Mikaels Crucible"));
            Defensive.AddLabel("Locket of the Iron Solari");
            Defensive.Add("Locket_of_the_Iron_Solari", new CheckBox("Locket of the Iron Solari"));
            Defensive.AddSeparator(0);
            Defensive.Add("Locket_of_the_Iron_Solari_ally", new CheckBox("Ally"));
            Defensive.Add("Locket_of_the_Iron_Solari_self", new CheckBox("Self"));
            Defensive.AddLabel("Face of the Mountain");
            Defensive.Add("Face_of_the_Mountain", new CheckBox("Face of the Mountain"));
            Defensive.AddSeparator(0);
            Defensive.Add("Face_of_the_Mountain_ally", new CheckBox("Ally"));
            Defensive.Add("Face_of_the_Mountain_self", new CheckBox("Self"));

            Sums = AMenu.AddSubMenu("Summoners", "sums");
            Sums.AddLabel("Heal");
            Sums.Add("healManager", new CheckBox("Use Heal"));
            Sums.Add("healManagerMinMeHP", new Slider("Self HP %", 30));
            Sums.Add("healManagerMinEnemyHP", new Slider("Enemy HP HP %", 30));
            Sums.AddLabel("Ignite");
            Sums.Add("igniteManager", new CheckBox("Use Ignite"));
            Sums.AddLabel("Barrier");
            Sums.Add("barrierManager", new CheckBox("Use Barrier"));
            Sums.Add("barrierManagerMinMeHP", new Slider("Self HP %", 30));
            Sums.Add("barrierManagerMinEnemyHP", new Slider("Enemy HP HP %", 30));

            SmiteMenu = AMenu.AddSubMenu("Smite Settings");
            SmiteMenu.AddGroupLabel("Camps");
            SmiteMenu.AddLabel("Epics");
            SmiteMenu.Add("SRU_Baron", new CheckBox("Baron"));
            SmiteMenu.Add("SRU_Dragon", new CheckBox("Dragon"));
            SmiteMenu.AddLabel("Buffs");
            SmiteMenu.Add("SRU_Blue", new CheckBox("Blue"));
            SmiteMenu.Add("SRU_Red", new CheckBox("Red"));
            SmiteMenu.AddLabel("Small Camps");
            SmiteMenu.Add("SRU_Gromp", new CheckBox("Gromp", false));
            SmiteMenu.Add("SRU_Murkwolf", new CheckBox("Murkwolf", false));
            SmiteMenu.Add("SRU_Krug", new CheckBox("Krug", false));
            SmiteMenu.Add("SRU_Razorbeak", new CheckBox("Razerbeak", false));
            SmiteMenu.Add("Sru_Crab", new CheckBox("Skuttles", false));
            SmiteMenu.AddSeparator();
            SmiteMenu.Add("smiteActive",
                          new KeyBind("Smite Active (toggle)", true, KeyBind.BindTypes.PressToggle, 'M'));
            SmiteMenu.AddSeparator();
            SmiteMenu.Add("useSlowSmite", new CheckBox("KS with Slow Smite"));
            SmiteMenu.Add("comboWithDuelSmite", new CheckBox("Combo With Duel Smite"));

            Smite                   = new Spell.Targeted(ObjectManager.Player.GetSpellSlotFromName("summonersmite"), 500);
            Game.OnUpdate          += GameOnOnUpdate;
            Obj_AI_Base.OnBuffGain += Obj_AI_Base_OnBuffGain;
        }
Example #20
0
        public void SumRangeOddTestStartAtOne()
        {
            int manualCalculation = _manualCalculateSumRangeOdd(0, 100);

            Assert.AreEqual(manualCalculation, Sums.SumRangeOdd(1, 100));
        }
Example #21
0
 public void Add(Sums sums, string clientID)
 {
     GetHttpResponse(clientID, sums, "api/calculator/add");
 }
Example #22
0
 public void SumRangeTestNegativeRange()
 {
     Assert.AreEqual(0, Sums.SumRange(10, 9));
 }
Example #23
0
 public void SumDigitsFromStringTest()
 {
     Assert.AreEqual(8, Sums.sumDigits("1232"));
     Assert.AreEqual(0, Sums.sumDigits("0"));
     Assert.AreEqual(0, Sums.sumDigits(""));
 }
Example #24
0
		public void EvalReportInfo(ReportName reportName, ScaffoldContext context, ReportDates reportDates,
			int currShiftIndex=-1,
			int export_excel = 0,			
			string selectedSortOfProduction=null,
			string[] baseStrings=null,//хранится выгрузки в base64 рисунки графиков			
			Controller curr_controller = null
			)
		{
			//В некоторых случаях, вроде экспорта в эксель, можно использовать уже вычисленные данные
			if (
			#region IsNeedCachedDateForReport
				(this.Successfull
				&&(export_excel==1
					&&!ReportListForRebuildForExcel.Contains(reportName.Eng))//Некоторые отчёты требуют не округлённые данные для экселя, так что формируем их заново
					|| shiftsReportNames.Contains(reportName.Eng))//Или для смен
				&& this.ReportName != null
				&& reportName.Eng == this.ReportName.Eng
				&& this.ReportDates.StartDate == reportDates.StartDate
				&& this.ReportDates.EndDate == reportDates.EndDate
			#endregion
				)
			{
				//Данные по сменам формируются из списка смен в периоде, но выводится только одна, так что обновляем эти данные
				if (shiftsReportNames.Contains(reportName.Eng))
				{
					this.CurrShiftIndex = currShiftIndex;
					ReportDates.RecalcShiftsDate(this);//Пересчитываем края текущей смены					
				}
				if (baseStrings != null)
				{
					this.BaseStrings = baseStrings;
				}
				this.SelectedSortOfProduction = selectedSortOfProduction;
				return;
			}
			#region init var
			this.Successfull = false;
			this.stopwatch.Restart();


			this.CurrShiftIndex = currShiftIndex;
			this.ReportDates = reportDates;
			this.SelectedSortOfProduction = selectedSortOfProduction;
			this.BaseStrings = baseStrings;
			this.ReportName = reportName;
			
			this.Dbcontext = context;			
			this.Curr_controller = curr_controller;
			
			this.IsByDay = IsByDay_report_list.Contains(reportName.Eng);
			isBDM1 = BDM1_reports_list.Contains(reportName.Eng);
			this.PlaceName = isBDM1 ? "БДМ-1" : "БДМ-2";			
			placeId = isBDM1 ? 1:2;
			
			

			this.roundNum = 3;
			this.Sums = new Dictionary<string, double[]>();			
			this.Records_List = new Dictionary<string, List<object>>();
			this.Records = new List<object>();
			#endregion
			switch (reportName.Eng)//на основе названия отчёта дополнительные операции над записями
			{
				case "ConsumptionByCycleByBDM1"://БДМ-1 по видам продукции
				case "ConsumptionByCycleByBDM2"://БДМ-2 по видам продукции
				case "ConsumptionByBDM1ByDay"://БДМ-1(Суточный)
				case "ConsumptionByBDM2ByDay"://БДМ-2(Суточный)
											  //делаем итого для нужных категорий
											  //double[] sums = StaticMethods.Generate_sums(RecordsToShow_ConsumptionByCycleByBDM);
					Records = Form_records<ConsumptionByCycleOfProduction>("ConsumptionByCycle").Select(r=>(object)r).ToList();
					var t_sum = Sums_CycleOfProduction(Records.Select(r => (ISums_CycleOfProduction)r).ToList());
					if (t_sum!=null)
					{
						Sums.Add("ConsumptionByCycleByBDM", t_sum);
					}
					
					break;
				case "TERperMonthperTonne"://Средневзвешенное ТЭР на тонну по циклам производства
										   //В данном отчете ограничение по датам используется для ограничения SKU по которым выводить годовой отчет, год передается отдельно
					Records_List = new Dictionary<string, List<object>>();
					Records_List.Add("TERperMonthperTonne",Form_records<TERperMonthperTonne>("TERperMonthperTonne").Select(r => (object)r).ToList());
					Records_List.Add("TERperCycleperTonne", Form_records<TERperCycleperTonne>("TERperCycleperTonne").Select(r => (object)r).ToList());
					Records_List.Add("TER_Plan", Form_records<TERperMonthperTonne>("TER_Plan").Select(r => (object)r).ToList());
					break;
				case "EnergyConsumptionByManufactureByHour"://Часовой расход электроэнергии по производству
					#region case "EnergyConsumptionByManufactureByHour"

					//Задача для каждого поля для указного для подсчёта, посчитать данные в разрезе списка индификаторов в Constants.places
					//Довольно интересный алгоритм, позволяющий делать группировку по динамическому Id закреплённому за местами Constants.places
					// причем за одно место может быть закреленно несколько ID
					//Получаем в результате массив double, где индекс массива это индекс места в Constants.places
					// А сам массив содержит информацию в разрезе часа, по всем местам.
					var precompute_data = Form_records<EnergyConsumptionByManufactureByHour>();
					if (precompute_data == null || precompute_data.Count == 0)
					{
						break;
					}
					//Собираем id по которым будем считать итоговую сумму по производству(колонка итого:)
					List<int> total_sums_place_ids_EnergyConsumptionByManufactureByHour = new List<int>();

					Constants.places_total.Values.ToList()
						.ForEach(r =>
						{ total_sums_place_ids_EnergyConsumptionByManufactureByHour.AddRange(r); }
							);

					////строка итого, храним Dictionary<string, double> для поддержки и других видов ТЭР, газа, пара и т.д.
					//List<Dictionary<string, double>> sums_EnergyConsumptionByManufactureByHour = new List<Dictionary<string, double>>();
					//подсчитываем данные по местам
					//var data_EnergyConsumptionByManufactureByHour; //= new Dictionary<string, List<double>>();
					var field_name_EnergyConsumptionByManufactureByHour = "EnergyConsumption";
					
					Records= precompute_data
							.Select(r => ((IHaveMeasureDate)r).Measure_Date)
							.Distinct()
							.Select(Measure_Date => {

								var values = SumField_byPlaceId(field_name_EnergyConsumptionByManufactureByHour, precompute_data.Where(r => ((IHaveMeasureDate)r).Measure_Date == Measure_Date).Select(r=>(EnergyConsumptionByManufactureByHour)r) .ToList(), roundNum, total_sums_place_ids_EnergyConsumptionByManufactureByHour);

								return new Data_EnergyConsumptionByManufactureByHour
								{
									Date = Measure_Date.ToShortDateString(),
									Time = Measure_Date.ToShortTimeString(),
									Values = values//массив из double с показаниями за текущий слайс на время и дату
								};

							}).ToList<object>();

					//Добавляем строковые итоги
					//Нужно пробежатся по срезам по часам и посчитать итоговые данные по каждому месту
					//напомню что индекс в массиве data это индекс места массиве Constants.places_total
					var sums_row_EnergyConsumptionByManufactureByHour = new double[places.Count + 1];//разменость +1 потому что ещё считаем последную колонку итого
					var param_values = typeof(Data_EnergyConsumptionByManufactureByHour).GetProperty("Values");
					foreach (var data in Records)
					{

						var curr_data = (List<double>)param_values.GetValue(data);
						for (int i = 0; i < curr_data.Count; i++)
						{
							sums_row_EnergyConsumptionByManufactureByHour[i] += curr_data[i];
						}

					}
					Sums.Add("row_EnergyConsumptionByManufactureByHour", sums_row_EnergyConsumptionByManufactureByHour);
					break;
				#endregion
				case "EnergyConsumptionByDevicesByDay"://Суточный расход электроэнергии по учётам
				case "EnergyConsumptionByDevicesByHour"://Часовой расход электроэнергии по учётам
					#region EnergyConsumptionByDevicesBy
					Stopwatch tempWatch = new Stopwatch();
					tempWatch.Start();
					//отличия только в группировках между этими отчетами, так что формируем признак
					//EnergyConsumptionByDevices
					//Собираем записи для формирования вывода
					//Т.к список устройств динамический, то под него нельзя создать класс, так что делаем группировки по ходу
					Records  = Form_records<EnergyConsumptionByDevices>("EnergyConsumptionByDevicesByDay").Select(r => (object)r).ToList();
					tempWatch.Stop();
					//Для строки Итого:
					Sums.Add("EnergyConsumptionByDevices", 
							Records
							.Select(r=>(EnergyConsumptionByDevices)r)
							.GroupBy(r => r.Device_Name,
							(g, r) => Math.Round(r.Sum(e => e.EnergyConsumption ?? 0), 3))
							.Append(0)
							.ToArray());



					//Для колонки Итого по производству:
					Sums.Add("EnergyConsumptionByDevices_col_production",
							Records
							.Select(r => (EnergyConsumptionByDevices)r)					
							.Where(r => Constants.EnergyConsumptionByDevices_total_devices.ContainsKey(r.Device_Name))//итого для строк считаем только для определенных колонок
							.GroupBy(r => r.Measure_Date, (g, rs) => rs.Sum(r => r.EnergyConsumption) ?? 0).ToArray());
					//Добавляем сумму по производству
					Sums["EnergyConsumptionByDevices"][Sums["EnergyConsumptionByDevices"].Length-1] = (Sums["EnergyConsumptionByDevices_col_production"].Sum(r => r));

										
					break;
				#endregion
				case "ConsumptionByManufactureByPeriod"://общая по производству
					#region "ConsumptionByManufactureByPeriod"
					Records = Form_records<ConsumptionByManufactureByPeriod>().Select(r=>(object)r).ToList();
					
					//Подготавливаем лист id мест по которым будем считать данные для итогов
					List<int> total_sums_place_ids = new List<int>();					
					Constants.places_total.Values.ToList()
						.ForEach(r =>
						{ total_sums_place_ids.AddRange(r); }
							);

					//Задача для каждого поля для указного для подсчёта,
					//посчитать данные в разрезе списка индификаторов в Constants.places
					var fInfo_ConsumptionByManufactureByPeriod = typeof(ConsumptionByManufactureByPeriod).GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
					Records_List = new Dictionary<string, List<object>>(Constants.fields_to_sum_ConsumptionByManufactureByPeriod.Count);
					foreach (var field_name in Constants.fields_to_sum_ConsumptionByManufactureByPeriod)
					{
						//подсчитываем данные по местам
						Records_List.Add(field_name, 
							SumField_byPlaceId(
								field_name,
								Records
								 .Select(r=>(ConsumptionByManufactureByPeriod)r)
								 .ToList(),
								roundNum,
								total_sums_place_ids)
							.Select(r=>(object)r)
							.ToList());
					}
					break;
				#endregion
				case "ConsumptionByBDM1ByHour"://БДМ-1(Часовой)
				case "ConsumptionByBDM2ByHour"://БДМ-2(Часовой)
					#region ConsumptionByBDMByHour
					Records = Form_records<ConsumptionByBDMbyHour>("ConsumptionByBDMByHour").Select(r=>(object)r).ToList();
					if (Records==null||Records.Count==0)
					{
						break;
					}
					//Из-за того что для вывода по часового мы берем сетку по часам,
					//а циклы могот заканчиватся и начинатся внутри часа, то на эти цикла происходит дублирование по параметрам, 
					//так что пробегаемся по записям и ищем такие случаи, и объединяем их в одну запись 

					//берем элементы по count-2 потому что сравниваем два элемента и последний не счем сравнивать
					var temp_recs = new List<ConsumptionByBDMbyHour>();
					for (int i = 0; i < Records.Count - 1; i++)
					{
						var curr = (IHaveComposition)Records.ElementAt(i);
						var next = (IHaveComposition)Records.ElementAt(i + 1);
						var excludeProp = new Dictionary<string, bool>() {["ID"]=false,["Composition"]=false};

						if (IsEqualPropValue(firstObject: curr, secondObject: next, excludePropList: excludeProp))
						{
							curr.Composition += ", " + next.Composition;
							i++;
						}
						temp_recs.Add((ConsumptionByBDMbyHour)curr);
					}
					Records = temp_recs.Select(r=>(object)r).ToList();
					//Для строки Итого:
					Sums.Add("ConsumptionByBDMByHour",

						value:
						//чтобы получить итого по записям, выделяем нужные столбцы и добаляем столбец по кторому будем вести группировку
						GetSumsAndAvgProp(
							Records.Select(r => (ConsumptionByBDMbyHour)r).ToList(), 
							propForSumList: tesSumList.ToDictionary(r => r, r => false),
							propForAvgList: tesAvgList.ToDictionary(r => r, r => false))
						 .Select(d => (double)(d??0.0)).ToArray());//распаковываем в дабл
					break;
				#endregion
				case "SkuDataByShifts_BDM1":
				case "SkuDataByShifts_BDM2":
					#region SkuDataByShifts
					var ter_list_shifts = Constants.ter_list_shifts;
					//нарезаем указный период на смены
					var shifts_list = new List<Shift>();
					int shift_index = 0;

					reportDates.CurrShiftStart = reportDates.CurrShiftStart.AddHours(-reportDates.ShiftLength);
					reportDates.CurrShiftEnd = reportDates.CurrShiftEnd.AddHours(-reportDates.ShiftLength);
					while (true)
					{
						if (reportDates.CurrShiftStart > DateTime.Now || reportDates.CurrShiftStart > reportDates.EndDate)//поледняя смена не должна выходить за текущюю дату или конец преиода
						{
							break;
						}
						else
						{
							shifts_list.Add(new Shift() { shift_start = reportDates.CurrShiftStart, shift_end = reportDates.CurrShiftEnd, shift_index = shift_index });
						}
						reportDates.CurrShiftStart = reportDates.CurrShiftStart.AddHours(reportDates.ShiftLength);
						reportDates.CurrShiftEnd = reportDates.CurrShiftEnd.AddHours(reportDates.ShiftLength);
						shift_index++;
					}

					var shiftStart = DateTime.Now;
					var shiftEnd = DateTime.Now;
					//если смена не выбрана(-1) то выводим последнию смену в нарезке, иначе выбраную смену
					if (shifts_list.Count > 0)
					{
						shiftStart = shifts_list[GetCurShiftIndex(currShiftIndex, shifts_list.Count)].shift_start;
						shiftEnd = shifts_list[GetCurShiftIndex(currShiftIndex, shifts_list.Count)].shift_end;
					}
					else
					{
						shiftStart = reportDates.CurrShiftStart;
						shiftEnd = reportDates.CurrShiftEnd;
					}

					reportDates.CurrShiftStart= shiftStart;
					reportDates.CurrShiftEnd = shiftEnd;

					Records_List.Add("SkuDataByShifts",
						Form_records<SkuDataByShifts>("SkuDataByShifts")						
						.OrderBy(r => r.CycleDateBegin)
						.Select(r=>(object)r)
						.ToList());
					var sku_list = Records_List["SkuDataByShifts"]
									.Select(r => ((IHaveSku)r).Sku)
									.ToList();


					Records_List.Add("Shifts_plan",  
						context.StgPlanTer
						 .Where(r => r.Year == shiftStart.Year
									&& r.Month == shiftStart.Month
									&& sku_list.Contains(r.Sku)
									&& r.PlaceId == (isBDM1 ? 1 : 2))
						 .Select(r=>(object)r)
						 .ToList());



					Records_List.Add("Shifts_index_list", shifts_list.Select(r => (object)r.shift_index.ToString()).ToList());
					Records_List.Add("Shifts_dates_list", shifts_list
															.Select(r => $"{r.shift_start.ToShortDateString()} {r.shift_start.ToShortTimeString()}-{r.shift_end.ToShortDateString()} {r.shift_end.ToShortTimeString()}")
															.Select(r=>(object)r)
															.ToList());
				
					//if (export_excel == 1)
					//{ return Excel_methods.Export_to_Excel_SkuDataByShifts(new ExcelExport(), report_name, shiftStart, shiftEnd, placeName: place_name, this, baseStrings, RecordsToShow_SkuDataByShifts, ter_list_shifts, shiftId: RecordsToShow_SkuDataByShifts.Count > 0 ? RecordsToShow_SkuDataByShifts.FirstOrDefault().ShiftId : 0, machinist_name: RecordsToShow_SkuDataByShifts.Count > 0 ? RecordsToShow_SkuDataByShifts.FirstOrDefault().Machinist_name : ""); }
					break;
				#endregion
				default:
					break;
			}
			//Если нужен список продуктов
			if (Records?.Count>0? Records?.FirstOrDefault().GetType().GetInterface("IListSortOfProd") != null:false)
			{
				ListSortOfProd = Records.OrderBy(m => ((IListSortOfProd)m).SortofProduction).Select(m => ((IListSortOfProd)m).SortofProduction).Distinct().ToArray();
				if (SelectedSortOfProduction != null && SelectedSortOfProduction != "All")
					Records = Records.Where(r => ((IListSortOfProd)r).SortofProduction == SelectedSortOfProduction).ToList();
			}
			//Округляем все поля
			RoundProps();
			this.Successfull = true;			
		}
Example #25
0
        public virtual void ChangeState(States newState)
        {
            if (newState == State)
            {
                return;
            }

            string exceptionMessage = $"Некорректная операция. Не предусмотрена смена статуса с {State} на {newState}";

            switch (newState)
            {
            //Подана
            case States.Submited:
                if (State == States.New || State == States.OnClarification)
                {
                    State = newState;
                }
                else
                {
                    throw new InvalidOperationException(exceptionMessage);
                }
                break;

            //На уточнении
            case States.OnClarification:
                if (State == States.Agreed ||
                    State == States.GivenForTake ||
                    State == States.Canceled ||
                    State == States.PartiallyClosed)
                {
                    State = newState;
                }
                else
                {
                    throw new InvalidOperationException(exceptionMessage);
                }
                break;

            //Согласована
            case States.Agreed:
                if (State == States.Submited)
                {
                    State = newState;
                }
                else
                {
                    throw new InvalidOperationException(exceptionMessage);
                }
                break;

            //Передана на выдачу
            case States.GivenForTake:
                if (State == States.Agreed)
                {
                    State = newState;
                }
                else
                {
                    throw new InvalidOperationException(exceptionMessage);
                }
                break;

            case States.Canceled:
                if (State == States.Submited ||
                    State == States.New ||
                    State == States.OnClarification ||
                    State == States.GivenForTake ||
                    State == States.Agreed)
                {
                    State = newState;
                }
                else
                {
                    throw new InvalidOperationException(exceptionMessage);
                }
                break;

            case States.Closed:
                State = Sums.All(x => x.Sum == x.ObservableExpenses.Sum(e => e.Money)) ? newState : States.PartiallyClosed;
                break;

            case States.PartiallyClosed:
                break;

            default:
                throw new NotImplementedException($"Не реализовано изменение статуса для {newState}");
            }
        }
Example #26
0
        /// <summary>
        /// Method for averaging colors by given block size of pixelation ratio, replacing alpha
        /// color with random neutral for source image color which get turned back to alpha once
        /// the pixelization finishes as averagedAlphaIgnore color that gets drawn back as transparent.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="target"></param>
        /// <returns></returns>
        public Image DrawImage(Bitmap source, Bitmap target)
        {
            if (source == null)
            {
                throw new ArgumentNullException("Source cannot be null!");
            }
            else if (target == null)
            {
                throw new ArgumentNullException("Target cannot be null!");
            }
            if (source.Size != target.Size)
            {
                throw new ArgumentException("Source and Target don't match sizes!");
            }
            List <Color> localPalette      = new List <Color>();
            Color        alphaIgnore       = Color.FromArgb(255, 0, 0, 0);
            int          alphaX            = -1;
            int          alphaY            = -1;
            bool         coordinatesPicked = false;

            for (int x = 0; x < source.Width; x++)
            {
                for (int y = 0; y < source.Height; y++)
                {
                    var local = source.GetPixel(x, y);
                    if (!localPalette.Contains(local))
                    {
                        localPalette.Add(local);
                    }
                    if (local.A == 0 && coordinatesPicked == false)
                    {
                        coordinatesPicked = true;
                        alphaX            = x;
                        alphaY            = y;
                    }
                }
            }

            while (true)
            {
                var   randomGenerator = new Random();
                int   genR            = randomGenerator.Next(0, 256);
                int   genG            = randomGenerator.Next(0, 256);
                int   genB            = randomGenerator.Next(0, 256);
                Color randomColor     = Color.FromArgb(255, genR, genG, genB);
                bool  isUnique        = false;
                foreach (var color in localPalette)
                {
                    if (color == randomColor)
                    {
                        isUnique = false;
                        break;
                    }
                    else
                    {
                        isUnique = true;
                    }
                }
                if (isUnique == true)
                {
                    alphaIgnore = randomColor;
                    break;
                }
                else
                {
                    continue;
                }
            }

            for (int x = 0; x < source.Width; x++)
            {
                for (int y = 0; y < source.Height; y++)
                {
                    var local = source.GetPixel(x, y);
                    if (local.A == 0)
                    {
                        source.SetPixel(x, y, alphaIgnore);
                    }
                }
            }

            using (var graphics = Graphics.FromImage(target))
            {
                graphics.PageUnit = GraphicsUnit.Pixel;

                for (int x = 0; x < source.Width; x += this.blockSize)
                {
                    for (int y = 0; y < source.Height; y += this.blockSize)
                    {
                        var sums = new Sums();
                        for (int xn = 0; xn < this.blockSize; xn++)
                        {
                            for (int yn = 0; yn < this.blockSize; yn++)
                            {
                                if (x + xn >= source.Width || y + yn >= source.Height)
                                {
                                    continue;
                                }

                                var color = source.GetPixel(x + xn, y + yn);

                                sums.A += color.A;
                                sums.R += color.R;
                                sums.G += color.G;
                                sums.B += color.B;
                                sums.C++;
                            }
                        }

                        var average = Color.FromArgb(
                            sums.A / sums.C,
                            sums.R / sums.C,
                            sums.G / sums.C,
                            sums.B / sums.C);

                        using (var brush = new SolidBrush(average))
                        {
                            graphics.FillRectangle(brush, x, y, (x + this.blockSize), (y + this.blockSize));
                        }
                    }
                }
            }

            if (coordinatesPicked == true)
            {
                Color averagedAlphaIgnore = source.GetPixel(alphaX, alphaY);
                for (int x = 0; x < source.Width; x++)
                {
                    for (int y = 0; y < source.Height; y++)
                    {
                        Color local = target.GetPixel(x, y);

                        if (local == averagedAlphaIgnore)
                        {
                            target.SetPixel(x, y, Color.FromArgb(0, 255, 255, 255));
                        }
                    }
                }
            }

            return(target);
        }
Example #27
0
 private void Calculate()
 {
     Min     = Sums.Min();
     StDev   = Sums.StDev();
     Average = Sums.Average();
 }