protected override async Task <ErrorList> DoReadAsync(object options, CancellationToken token = default)
        {
            var output = await SalesOrder_ReadListAsync(options,
                                                        CriteriaObject?.ToDataContract <SalesOrder_ReadListInput_Criteria>(options));

            return(output.Messages);
        }
Example #2
0
        protected override ErrorList DoRead(object options)
        {
            var output = SalesOrder_ReadList(
                CriteriaObject == null ? null : CriteriaObject.ToDataContract <SalesOrder_ReadListInput_Criteria>(options), options);

            return(output.Messages);
        }
Example #3
0
        private void AnalyzePlaceButton_Click(object sender, EventArgs e)
        {
            if (!coordinatesAnalyze.IsEmpty)
            {
                var pointDictionary = AreaColors(PointSide);
                using (StreamWriter writer = new StreamWriter($@"{ProjectDir}\pointColors.txt"))
                {
                    foreach (KeyValuePair <string, ColorInfo> keyValue in pointDictionary.OrderByDescending(elem => elem.Value.ColorCount))
                    {
                        writer.WriteLine($"{keyValue.Key} : {keyValue.Value.ColorCount}");
                    }
                }
                var pointAnalyze       = ColorsAnalyze(pointDictionary);
                var fragmentDictionary = AreaColors(RectSide);
                var fragmentAnalyze    = ColorsAnalyze(fragmentDictionary);
                var analyze            = new StringBuilder();

                if (detectSizeRadio.Checked)
                {
                    ImageColors(fragmentAnalyze);
                    var imageObjectsParameters         = FragmentObjectsSizeAnalyze(fragmentAnalyze);
                    var imageObjectsParametersPresence = imageObjectsParameters.Where(param => param.Value.Count > 0);
                    if (imageObjectsParametersPresence.Any())
                    {
                        foreach (var elem in imageObjectsParametersPresence)
                        {
                            var objectName = elem.Key;
                            analyze.AppendLine(DetectObjectName(objectName));
                            foreach (var objectParameters in elem.Value)
                            {
                                if (objectParameters.Area > 1)
                                {
                                    analyze.AppendLine($"Длина = {objectParameters.ArcLength}, площадь: {objectParameters.Area}");
                                }
                            }
                        }
                    }
                }
                var criteriaFragmentAnalyze = CriteriaObject.GetInstance().CalculateAnalyze(fragmentAnalyze);
                var criteriaPointAnalyze    = CriteriaObject.GetInstance().CalculateAnalyze(pointAnalyze, true);
                analyze.AppendLine(criteriaFragmentAnalyze);
                analyze.AppendLine(criteriaPointAnalyze);
                AnalyzeForm analyzeForm = new AnalyzeForm();
                analyzeForm.SetPointGridView(pointAnalyze);
                analyzeForm.SetFragmentGridView(fragmentAnalyze);
                analyzeForm.AddAnalyze(analyze.ToString());
                analyzeForm.Show();
            }
            else
            {
                MessageBox.Show("Выберите участок карты!", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void setDataGridView()
        {
            var criteries = CriteriaObject.GetInstance().CriteriaDict;
            //var currentRow = 0;
            //var currentRow = criteriaGridView.Rows.Add();
            var currentRow = 0;

            foreach (var criteria in criteries)
            {
                currentRow = criteriaGridView.Rows.Add();
                var buildingName = criteria.Key;
                var row          = criteriaGridView.Rows[currentRow];
                row.Cells["Building"].Value = buildingName;
                foreach (var mapObject in criteria.Value)
                {
                    var objectName = mapObject.Key;
                    var priority   = mapObject.Value;
                    var cell       = row.Cells[objectName];
                    cell.Value = priority;
                }
            }
            //criteriaGridView.Rows.RemoveAt(currentRow + 1);
        }
Example #5
0
        /// <summary>
        /// Creates and adds a new ecclesial calendar with default events, activities, openings and criteria.
        /// </summary>
        /// <param name="calendarId"></param>
        /// <param name="startOn"></param>
        /// <param name="endOn"></param>
        /// <returns></returns>
        public Models.Calendar AddEcclesialEvents(int calendarId, DateTime?startOn = null, DateTime?endOn = null)
        {
            if (this.IsPrincipalAParticipant)
            {
                throw new NotAuthorizedException();
            }

            var userId   = this.Source.Principal.GetUser()?.Value.ConvertTo <int>() ?? 0;
            var user     = this.Context.Users.Include(u => u.Info).SingleOrDefault(u => u.Id == userId) ?? throw new NotAuthorizedException();
            var calendar = this.Context.Calendars.SingleOrDefault(c => c.Id == calendarId) ?? throw new NoContentException(typeof(Calendar));

            // TODO: Need generic fucntion to test permission to allow editing calendar.
            var ownsAccount = this.Context.Accounts.Any(a => a.Id == calendar.AccountId && a.OwnerId == userId);

            if (!ownsAccount)
            {
                throw new NotAuthorizedException();
            }

            var questions = AddQuestions(calendar.AccountId);
            var qTitle    = questions.First(q => q.Caption.Equals("Title"));

            // Determine date range.
            var start = startOn ?? DateTime.UtcNow.Date;
            var end   = endOn ?? start.AddDays(365);
            var days  = (end - start).Days;

            var events = new List <Event>(days);

            var member = new CriteriaObject("Member", true)
            {
                AddedById = userId
            };
            var brother = new CriteriaObject("Brother", true)
            {
                AddedById = userId
            };
            var sister = new CriteriaObject("Sister", true)
            {
                AddedById = userId
            };
            var presider = new CriteriaObject(new CriteriaValue("Skill", "Preside"), (Criteria)brother, (Criteria)member)
            {
                AddedById = userId
            };
            var pianist = new CriteriaObject(new CriteriaValue("Skill", "Pianist"), (Criteria)member)
            {
                AddedById = userId
            };
            var exhorter = new CriteriaObject(new CriteriaValue("Skill", "Exhort"), (Criteria)brother)
            {
                AddedById = userId
            };
            var reader = new CriteriaObject(new CriteriaValue("Skill", "Read"), (Criteria)brother, (Criteria)member)
            {
                AddedById = userId
            };
            var server = new CriteriaObject(new CriteriaValue("Skill", "Serve"), (Criteria)brother, (Criteria)member)
            {
                AddedById = userId
            };
            var prayer = new CriteriaObject(new CriteriaValue("Skill", "Pray"), (Criteria)brother, (Criteria)member)
            {
                AddedById = userId
            };
            var door = new CriteriaObject(new CriteriaValue("Skill", "Doorman"), (Criteria)brother, (Criteria)member)
            {
                AddedById = userId
            };
            var emblems = new CriteriaObject(new CriteriaValue("Skill", "Emblems"), (Criteria)member)
            {
                AddedById = userId
            };
            var lecturer = new CriteriaObject(new CriteriaValue("Skill", "Lecturer"), (Criteria)brother)
            {
                AddedById = userId
            };
            var study = new CriteriaObject(new CriteriaValue("Skill", "Bible Class"), (Criteria)brother)
            {
                AddedById = userId
            };
            var clean = new CriteriaObject(new CriteriaValue("Skill", "Clean"), (Criteria)member)
            {
                AddedById = userId
            };
            var criteria = new List <CriteriaObject>()
            {
                member, brother, sister, pianist, presider, exhorter, reader, server, prayer, door, emblems, lecturer, clean
            };

            // Sunday Memorial
            var   sunday        = start.DayOfWeek == DayOfWeek.Sunday ? start : start.AddDays(7 - (int)start.DayOfWeek);
            Event firstMemorial = null;

            while (sunday <= end)
            {
                // Memorial

                var memorial = new Event(calendar, "Memorial Meeting", sunday.AddHours(11), sunday.AddHours(13))
                {
                    Description     = "Sunday memorial meeting.",
                    AddedById       = userId,
                    ParentEvent     = firstMemorial,
                    Repetition      = EventRepetition.Weekly,
                    RepetitionEndOn = end,
                    RepetitionSize  = 1
                };
                var aPreside = new Activity(memorial, "Presider")
                {
                    AddedById = userId, Sequence = 1
                };
                aPreside.Openings.Add(new Opening(aPreside, "Preside", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aPreside.Criteria.Add(new ActivityCriteria(aPreside, presider));
                memorial.Activities.Add(aPreside);

                var aExhort = new Activity(memorial, "Exhorter")
                {
                    AddedById = userId, Sequence = 2
                };
                aExhort.Openings.Add(new Opening(aExhort, "Exhort", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aExhort.Criteria.Add(new ActivityCriteria(aExhort, exhorter));
                memorial.Activities.Add(aExhort);

                var aPianist = new Activity(memorial, "Pianist")
                {
                    AddedById = userId, Sequence = 3
                };
                aPianist.Openings.Add(new Opening(aPianist, "Pianist", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aPianist.Criteria.Add(new ActivityCriteria(aPianist, pianist));
                memorial.Activities.Add(aPianist);

                var aDoor = new Activity(memorial, "Door Keeper")
                {
                    AddedById = userId, Sequence = 4
                };
                aDoor.Openings.Add(new Opening(aDoor, "Door", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aDoor.Criteria.Add(new ActivityCriteria(aDoor, door));
                memorial.Activities.Add(aDoor);

                var aReadings = new Activity(memorial, "Readings")
                {
                    AddedById = userId, Sequence = 5
                };
                aReadings.Openings.Add(new Opening(aReadings, "1st Reading", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aReadings.Openings.Add(new Opening(aReadings, "2nd Reading", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aReadings.Criteria.Add(new ActivityCriteria(aReadings, reader));
                memorial.Activities.Add(aReadings);

                var aPrayers = new Activity(memorial, "Prayers")
                {
                    AddedById = userId, Sequence = 6
                };
                aPrayers.Openings.Add(new Opening(aPrayers, "Bread", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aPrayers.Openings.Add(new Opening(aPrayers, "Wine", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aPrayers.Openings.Add(new Opening(aPrayers, "Close", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aPrayers.Criteria.Add(new ActivityCriteria(aPrayers, prayer));
                memorial.Activities.Add(aPrayers);

                //var aServing = new Activity(memorial, "Serving") { AddedById = userId, Sequence = 7 };
                //aServing.Openings.Add(new Opening(aServing, "Server", 4, 4, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility) { AddedById = userId });
                //aServing.Criteria.Add(new ActivityCriteria(aServing, server));
                //memorial.Activities.Add(aServing);

                calendar.Events.Add(memorial);

                // Lecture
                var lecture = new Event(calendar, "Bible Talk", sunday.AddHours(19), sunday.AddHours(20))
                {
                    Description = "Sunday night Bible talk.",
                    AddedById   = userId
                };
                var aPreside2 = new Activity(lecture, "Presider")
                {
                    AddedById = userId, Sequence = 1
                };
                aPreside2.Openings.Add(new Opening(aPreside2, "Presider", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aPreside2.Criteria.Add(new ActivityCriteria(aPreside2, presider));
                lecture.Activities.Add(aPreside2);

                var aLecture = new Activity(lecture, "Lecture")
                {
                    AddedById = userId, Sequence = 2
                };
                var oLecture = new Opening(aLecture, "Speak", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                };
                oLecture.Actions.Add(new Process(oLecture, ActionTrigger.Accept, "Add(Participant.Answers, Opening.Tags, Question.Caption=\"Title\");")
                {
                    AddedById = userId
                });
                oLecture.Actions.Add(new Process(oLecture, ActionTrigger.Unapply, "Delete(Opening.Tags, Tag.Key=\"Title\");")
                {
                    AddedById = userId
                });
                oLecture.Questions.Add(new OpeningQuestion(oLecture, qTitle));
                aLecture.Openings.Add(oLecture);
                aLecture.Criteria.Add(new ActivityCriteria(aLecture, lecturer));
                lecture.Activities.Add(aLecture);

                calendar.Events.Add(lecture);

                if (firstMemorial == null)
                {
                    firstMemorial = memorial;
                }
                sunday = sunday.AddDays(7);
            }

            // Bible Class
            var   thursday        = start.DayOfWeek <= DayOfWeek.Thursday ? start.AddDays(4 - (int)start.DayOfWeek) : start.AddDays(7 + (int)start.DayOfWeek - 4);
            Event firstBibleClass = null;

            while (thursday <= end)
            {
                // Lecture
                var bibleClass = new Event(calendar, "Bible Class", thursday.AddHours(19), thursday.AddHours(20))
                {
                    Description     = "Sunday night Bible talk.",
                    AddedById       = userId,
                    ParentEvent     = firstBibleClass,
                    Repetition      = EventRepetition.Weekly,
                    RepetitionEndOn = end,
                    RepetitionSize  = 1
                };
                var aPreside = new Activity(bibleClass, "Preside")
                {
                    AddedById = userId, Sequence = 1
                };
                aPreside.Openings.Add(new Opening(aPreside, "Presider", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aPreside.Criteria.Add(new ActivityCriteria(aPreside, presider));
                bibleClass.Activities.Add(aPreside);

                var aSpeak = new Activity(bibleClass, "Speak")
                {
                    AddedById = userId, Sequence = 2
                };
                var oSpeak = new Opening(aSpeak, "Speaker", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                };
                oSpeak.Actions.Add(new Process(oSpeak, ActionTrigger.Accept, "Add(Participant.Answers, Opening.Tags, Question.Caption=\"Title\");")
                {
                    AddedById = userId
                });
                oSpeak.Actions.Add(new Process(oSpeak, ActionTrigger.Unapply, "Delete(Opening.Tags, Tag.Key=\"Title\");")
                {
                    AddedById = userId
                });
                oSpeak.Questions.Add(new OpeningQuestion(oSpeak, qTitle));
                aSpeak.Openings.Add(oSpeak);
                aSpeak.Criteria.Add(new ActivityCriteria(aSpeak, study));
                bibleClass.Activities.Add(aSpeak);

                var aPianist = new Activity(bibleClass, "Pianist")
                {
                    AddedById = userId, Sequence = 3
                };
                aPianist.Openings.Add(new Opening(aPianist, "Pianist", 1, 1, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                aPianist.Criteria.Add(new ActivityCriteria(aPianist, pianist));
                bibleClass.Activities.Add(aPianist);

                calendar.Events.Add(bibleClass);

                if (firstBibleClass == null)
                {
                    firstBibleClass = bibleClass;
                }
                thursday = thursday.AddDays(7);
            }

            // Hall Cleaning
            var   saturday       = start.DayOfWeek == DayOfWeek.Saturday ? start : start.AddDays(DayOfWeek.Saturday - start.DayOfWeek);
            Event firstCleanHall = null;

            while (saturday <= end)
            {
                var cleanHall = new Event(calendar, "Hall Cleaning", saturday.AddHours(8), saturday.AddHours(10))
                {
                    Description     = "Hall cleaning and maintenance.",
                    AddedById       = userId,
                    ParentEvent     = firstCleanHall,
                    Repetition      = EventRepetition.Weekly,
                    RepetitionEndOn = end,
                    RepetitionSize  = 1
                };
                var cleaning = new Activity(cleanHall, "Cleaning")
                {
                    AddedById = userId
                };
                cleaning.Openings.Add(new Opening(cleaning, "Cleaner", 2, 6, OpeningType.Application, ApplicationProcess.AutoAccept, CriteriaRule.Visibility)
                {
                    AddedById = userId
                });
                cleaning.Criteria.Add(new ActivityCriteria(cleaning, clean));
                cleanHall.Activities.Add(cleaning);

                calendar.Events.Add(cleanHall);

                if (firstCleanHall == null)
                {
                    firstCleanHall = cleanHall;
                }
                saturday = saturday.AddDays(7);
            }

            using (var transaction = this.Context.Database.BeginTransaction())
            {
                try
                {
                    this.Context.Criteria.AddRange(criteria);
                    this.Context.SaveChanges();

                    this.Context.Calendars.Update(calendar);
                    this.Context.SaveChanges();

                    transaction.Commit();
                }
                catch (DbUpdateException)
                {
                    transaction.Rollback();
                    throw;
                }
            }

            return(this.Source.Mapper.Map <Models.Calendar>(calendar));
        }