Esempio n. 1
0
        private static BaseSector ProcessSector(iatiactivity activity)
        {
            if (activity.sector == null || activity.sector.Length == 0)
            {
                return(null);
            }
            var item = activity.sector[0];

            return(new BaseSector()
            {
                Code = item.code,
                Name = item.narrative != null && item.narrative.Length > 0 ? item.narrative[0].Value : null
            });
        }
Esempio n. 2
0
        private static void ProcessActivity(iatiactivity activity)
        {
            BaseActivity ba = new BaseActivity
            {
                Iatiidentifier = activity.iatiidentifier.Value,
                Title          = activity.title.narrative != null && activity.title.narrative.Length > 0 ? GetNarrative(activity.title.narrative, false) : "no title",
                Description    = GetDescription(activity.description, "1", false),
                Sector         = ProcessSector(activity)
            };

            Console.WriteLine($"Acitivity: {ba.Iatiidentifier}");
            Console.WriteLine($"  Title: {ba.Title}");
            Console.WriteLine($"  Sector code={ba.Sector.Code}, name={ba.Sector.Name}");
            Console.WriteLine($"  Description: {ba.Description}");

            // Persist activity in data store.
            DataStore.Store(ba);
        }
Esempio n. 3
0
        public void ReturnTheObjFromSpecifiedPositionOfAnArray5()
        {

            iatiactivity[] array = new iatiactivity[3];
            array[0] = new iatiactivity { IatiIdentifier = "546" };

            iatiactivity obj = array.n(12);


            Assert.IsNotNull(obj);
        }
Esempio n. 4
0
        public void SetExchangedValues(iatiactivity activity)
        {
            if (activity.transaction != null)
                foreach (var tr in activity.transaction)
                {
                    SetCurrencyExRateAndVal(tr, activity.defaultcurrency, tr.transactiondate?.isodate ?? default(DateTime));
                }

            if (activity.budget != null)
                foreach (var tr in activity.budget)
                {
                    SetCurrencyExRateAndVal(tr, activity.defaultcurrency);

                }

            if (activity.planneddisbursement != null)
                foreach (var tr in activity.planneddisbursement)
                {
                    SetCurrencyExRateAndVal(tr, activity.defaultcurrency);

                }
        }
Esempio n. 5
0
        private void LoadChildActivities(iatiactivity activity)
        {
            if (activity.HasChildActivity)
            {
                var relatedActivities = new List<iatiactivity>();
                var relatedActivity = new iatiactivity();

                var ras = (from a in dbContext.Activities
                           where a.IatiIdentifier.StartsWith(activity.IatiIdentifier)
                                && a.Hierarchy == 2
                           select new ActivityModel
                           {
                               IatiActivity = a.IatiActivity,
                               OrgId = a.OrgId,
                               ProjectId = a.ProjectId,
                               MappedProjectId = a.MappedProjectId,
                               MappedTrustFundId = a.MappedTrustFundId,
                               IsInclude = a.IsInclude
                           }).ToList();

                relatedActivities = ParseXMLAndResolve(ras);

                //add all transaction of child activities to parent 
                List<transaction> transactions = new List<transaction>();
                if (activity.transaction != null)
                    transactions = activity.transaction.ToList();

                foreach (var ra in relatedActivities)
                {
                    if (ra.transaction != null)
                        transactions.AddRange(ra.transaction);

                    SetExchangedValues(ra);
                }
                activity.transaction = transactions.ToArray();
            }

        }
Esempio n. 6
0
        public int SaveAtivities(List<Activity> activities, List<iatiactivity> iatiActivities, tblFundSource fundSource)
        {

            foreach (var activity in activities)
            {
                var a = dbContext.Activities.FirstOrDefault(x => x.IatiIdentifier == activity.IatiIdentifier);
                if (a != null)
                {
                    a.OrgId = activity.OrgId;

                    a.IatiActivityPrev = a.IatiActivity;
                    a.IatiActivity = activity.IatiActivity;

                    a.Hierarchy = activity.Hierarchy;
                    a.ParentHierarchy = activity.ParentHierarchy;

                    a.DownloadDatePrev = a.DownloadDate;
                    a.DownloadDate = DateTime.Now;

                    //update aimsdb
                    if (a.ProjectId > 0 || a.MappedProjectId > 0)
                    {
                        var aimsDAL = new AimsDAL();

                        //step 1: project structure
                        var iactivities = new List<iatiactivity>();
                        if (a.Hierarchy == 1)
                            iactivities = ImportLogic.LoadH1ActivitiesWithChild(iatiActivities); // here pass all activities to find out their child activities
                        else
                            iactivities = ImportLogic.LoadH2ActivitiesWithParent(iatiActivities);

                        //step 2: get mapped iatiActivity and aimsProject
                        var iatiActivity = iactivities.Find(f => f.IatiIdentifier == a.IatiIdentifier);
                        // SetExchangedValues
                        SetExchangedValues(iatiActivity);
                        iatiActivity.childActivities.ForEach(ra => SetExchangedValues(ra));

                        var aimsProject = new iatiactivity();

                        if (a.ProjectId > 0)
                        {
                            aimsProject = aimsDAL.GetAIMSProjectInIATIFormat(a.ProjectId);
                            if (aimsProject != null)
                            {
                                //step 3: get general preference
                                var generalPreference = GetFieldMappingPreferenceGeneral(a.OrgId);

                                //step 4: create a ProjectFieldMapModel using iatiActivity, aimsProject and generalPreference
                                var ProjectFieldMapModel = new ProjectFieldMapModel(iatiActivity, aimsProject, generalPreference);

                                //step 5: SetFieldMappingPreferences
                                var ProjectFieldMapModels = new List<ProjectFieldMapModel>(); // here we make a list just to use existing method (e.g existing method require a List parameter)
                                ProjectFieldMapModels.Add(ProjectFieldMapModel);

                                ImportLogic.SetFieldMappingPreferences(ProjectFieldMapModels, ProjectFieldMapModel);

                                //step 6: merge iatiActivity and aimsProject; and get an new merged activity
                                var mergedActivities = ImportLogic.MergeProjects(ProjectFieldMapModels); //now it will allways return a list containing single activity
                                mergedActivities.n(0).AllID = fundSource.Id + "~" + a.OrgId + "~"
                                        + (int)ExecutingAgencyType.DP + "~"
                                        + fundSource.FundSourceCategoryId;
                                //step 7: update aims database with margedActivities
                                aimsDAL.UpdateProjects(mergedActivities, "system");
                            }
                            else
                            {
                                dbContext.Logs.Add(new Log
                                {
                                    IatiIdentifier = activity.IatiIdentifier,
                                    OrgId = activity.OrgId,
                                    ProjectId = a.MappedProjectId,
                                    Message = "The mapped project is not found in AIMS database",
                                    LogType = (int)LogType.AimsProjectNotFound,
                                    DateTime = DateTime.Now
                                });
                            }
                        }
                        else if (a.MappedProjectId > 0) //for co-finance projects
                        {
                            aimsProject = aimsDAL.GetAIMSProjectInIATIFormat(a.MappedProjectId);

                            if (aimsProject != null)
                            {
                                iatiActivity.AllID = fundSource.Id + "~" + a.OrgId + "~"
                                        + (int)ExecutingAgencyType.DP + "~"
                                        + fundSource.FundSourceCategoryId;


                                aimsProject.MatchedProjects.Add(iatiActivity);
                                //step 7: update aims database with margedActivities
                                aimsDAL.UpdateCofinanceProjects(new List<iatiactivity> { aimsProject }, "system");
                            }
                            else
                            {
                                dbContext.Logs.Add(new Log
                                {
                                    IatiIdentifier = activity.IatiIdentifier,
                                    OrgId = activity.OrgId,
                                    ProjectId = a.MappedProjectId,
                                    Message = "The mapped project is not found in AIMS database",
                                    LogType = (int)LogType.AimsProjectNotFound,
                                    DateTime = DateTime.Now
                                });
                            }

                        }

                    }

                }
                else
                {
                    activity.DownloadDate = DateTime.Now;
                    dbContext.Activities.Add(activity);

                    dbContext.Logs.Add(new Log
                    {
                        IatiIdentifier = activity.IatiIdentifier,
                        OrgId = activity.OrgId,
                        Message = "Imported new activity",
                        LogType = (int)LogType.AddedNewActivity,
                        DateTime = DateTime.Now
                    });
                }

            }

            return dbContext.SaveChanges();
        }
Esempio n. 7
0
        private List<ProjectFieldMapModel> PrepareMappedActivities(List<iatiactivity> iatiActivities, Activity a, AimsDAL aimsDAL)
        {
            //step 1: project structure
            var iactivities = new List<iatiactivity>();
            if (a.Hierarchy == 1)
                iactivities = ImportLogic.LoadH1ActivitiesWithChild(iatiActivities); // here pass all activities to find out their child activities
            else
                iactivities = ImportLogic.LoadH2ActivitiesWithParent(iatiActivities);

            //step 2: get mapped iatiActivity and aimsProject
            var iatiActivity = iactivities.Find(f => f.IatiIdentifier == a.IatiIdentifier);
            // SetExchangedValues
            SetExchangedValues(iatiActivity);
            iatiActivity.childActivities.ForEach(ra => SetExchangedValues(ra));

            var aimsProject = new iatiactivity();
            if (a.ProjectId > 0)
            {
                aimsProject = aimsDAL.GetAIMSProjectInIATIFormat(a.ProjectId);
            }
            else if (a.MappedProjectId > 0) //for co-finance projects
            {
                aimsProject = aimsDAL.GetAIMSProjectInIATIFormat(a.MappedProjectId);
            }

            //step 3: get general preference
            var generalPreference = GetFieldMappingPreferenceGeneral(a.OrgId);

            //step 4: create a ProjectFieldMapModel using iatiActivity, aimsProject and generalPreference
            var ProjectFieldMapModel = new ProjectFieldMapModel(iatiActivity, aimsProject, generalPreference);

            //step 5: SetFieldMappingPreferences
            var ProjectFieldMapModels = new List<ProjectFieldMapModel>(); // here we make a list just to use existing method (e.g existing method require a List parameter)
            ProjectFieldMapModels.Add(ProjectFieldMapModel);

            ImportLogic.SetFieldMappingPreferences(ProjectFieldMapModels, ProjectFieldMapModel);
            return ProjectFieldMapModels;
        }
Esempio n. 8
0
        public int SaveAtivity(Activity activity, iatiactivity iatiActivity, tblFundSource fundSource)
        {


            return SaveAtivities(new List<Activity> { activity }, new List<iatiactivity> { iatiActivity }, fundSource);
        }
Esempio n. 9
0
        public iatiactivityModel ToMinifiedIatiActivityModel(iatiactivity iatiActivity, bool includeTransactions = false, bool includeChilds = false, bool includeMatched = false)
        {
            return new iatiactivityModel
            {
                IsDataSourceAIMS = iatiActivity.IsDataSourceAIMS,
                IsCofinancedProject = iatiActivity.IsCofinancedProject,
                IsTrustFundedProject = iatiActivity.IsTrustFundedProject,
                IsCommitmentIncluded = iatiActivity.IsCommitmentIncluded,
                IsDisbursmentIncluded = iatiActivity.IsDisbursmentIncluded,
                IsPlannedDisbursmentIncluded = iatiActivity.IsPlannedDisbursmentIncluded,
                IsInclude = iatiActivity.IsInclude,

                ProjectId = iatiActivity.ProjectId,
                MappedProjectId = iatiActivity.MappedProjectId,
                MappedTrustFundId = iatiActivity.MappedTrustFundId,
                HasChildActivity = iatiActivity.HasChildActivity,
                HasParentActivity = iatiActivity.HasParentActivity,
                MatchedProjects = includeMatched && iatiActivity.MatchedProjects?.Count > 0 ? ToMinifiedIatiActivitiesModel(iatiActivity.MatchedProjects) : null,
                childActivities = includeChilds && iatiActivity.childActivities?.Count > 0 ? ToMinifiedIatiActivitiesModel(iatiActivity.childActivities) : null,
                PercentToBD = iatiActivity.PercentToBD,
                IsRelevant = iatiActivity.IsRelevant,

                Commitments = includeTransactions ? iatiActivity.Commitments : null,
                TotalCommitment = iatiActivity.TotalCommitment,
                CommitmentsThisDPOnly = includeTransactions ? iatiActivity.CommitmentsThisDPOnly : null,
                TotalCommitmentThisDPOnly = iatiActivity.TotalCommitmentThisDPOnly,
                PlannedDisbursments = includeTransactions ? iatiActivity.PlannedDisbursments : null,
                TotalPlannedDisbursment = iatiActivity.TotalPlannedDisbursment,
                Disbursments = includeTransactions ? iatiActivity.Disbursments : null,
                TotalDisbursment = iatiActivity.TotalDisbursment,
                DisbursmentsThisDPOnly = includeTransactions ? iatiActivity.DisbursmentsThisDPOnly : null,
                TotalDisbursmentThisDPOnly = iatiActivity.TotalDisbursmentThisDPOnly,

                AllID = iatiActivity.AllID,

                IatiIdentifier = iatiActivity.IatiIdentifier,
                Title = iatiActivity.Title,
                Description = iatiActivity.Description,
                ReportingOrg = iatiActivity.ReportingOrg,
                ImplementingOrgs = iatiActivity.ImplementingOrgs,
                ExtendingOrgs = iatiActivity.ExtendingOrgs,
                AidType = iatiActivity.AidType,
                AidTypeCode = iatiActivity.AidTypeCode,
                ActivityStatus = iatiActivity.ActivityStatus,

                PlannedStartDate = iatiActivity.PlannedStartDate,
                ActualStartDate = iatiActivity.ActualStartDate,
                PlannedEndDate = iatiActivity.PlannedEndDate,
                ActualEndDate = iatiActivity.ActualEndDate

            };
        }
Esempio n. 10
0
        private static iatiactivity MergeToSingleActivity(List<iatiactivity> iatiActivities)
        {
            var groupedActivity = new iatiactivity();

            var trns = new List<transaction>();
            var bgts = new List<budget>();
            var plnDis = new List<planneddisbursement>();

            foreach (var activity in iatiActivities)
            {
                trns.AddRange(activity.transaction);
                bgts.AddRange(activity.budget);
                plnDis.AddRange(activity.planneddisbursement);
            }
            groupedActivity.transaction = trns.ToArray();
            groupedActivity.budget = bgts.ToArray();
            groupedActivity.planneddisbursement = plnDis.ToArray();

            return groupedActivity;
        }
Esempio n. 11
0
        public ProjectFieldMapModel(iatiactivity _iatiActivity, iatiactivity _aimsProject,
            List<FieldMappingPreferenceGeneral> generalPreferences)
            : this(_iatiActivity, _aimsProject)
        {
            foreach (var preference in generalPreferences)
            {
                var field = Fields.Find(f => f.Field == preference.FieldName);
                if (field != null)
                    field.IsSourceIATI = preference.IsSourceIATI;

                var transactionField = TransactionFields.Find(f => f.Field == preference.FieldName);
                if (transactionField != null)
                    transactionField.IsSourceIATI = preference.IsSourceIATI;
            }
        }
Esempio n. 12
0
        public ProjectFieldMapModel(iatiactivity _iatiActivity, iatiactivity _aimsProject, bool isSourceIATI = true)
            : this()
        {
            iatiActivity = _iatiActivity;
            aimsProject = _aimsProject;

            if (iatiActivity != null && aimsProject != null)
            {
                Fields.Add(new FieldMap
                {
                    Field = IatiFields.Title,
                    AIMSValue = aimsProject.Title,
                    IATIValue = iatiActivity.Title,
                    IsSourceIATI = isSourceIATI
                });
                Fields.Add(new FieldMap
                {
                    Field = IatiFields.Description,
                    AIMSValue = aimsProject.Description,
                    IATIValue = iatiActivity.Description,
                    IsSourceIATI = isSourceIATI

                });
                Fields.Add(new FieldMap
                {
                    Field = IatiFields.Activitystatus,
                    AIMSValue = aimsProject.ActivityStatus,
                    IATIValue = iatiActivity.ActivityStatus,
                    IsSourceIATI = isSourceIATI

                });
                //                public const string Document = "Document";
                //public const string AidType = "AidType";
                //public const string Dates = "Dates";
                //public const string Sector = "Sector";
                //public const string Location = "Location";
                //public const string ExecutingAgency = "ExecutingAgency";

                Fields.Add(new FieldMap
                {
                    Field = IatiFields.Document,
                    AIMSValue = (aimsProject.documentlink?.Count() ?? 0) + " Document(s)",
                    IATIValue = (iatiActivity.documentlink?.Count() ?? 0) + " Document(s)",
                    IsSourceIATI = isSourceIATI

                });
                Fields.Add(new FieldMap
                {
                    Field = IatiFields.AidType,
                    AIMSValue = aimsProject.AidType,
                    IATIValue = iatiActivity.AidType,
                    IsSourceIATI = isSourceIATI

                });
                //Fields.Add(new FieldMap
                //{
                //    Field = IatiFields.Dates,
                //    AIMSValue = aimsProject.AidType,
                //    IATIValue = iatiActivity.AidType,
                //    IsSourceIATI = isSourceIATI

                //});
                Fields.Add(new FieldMap
                {
                    Field = IatiFields.Sector,
                    AIMSValue = (aimsProject.sector?.Count() ?? 0) + " Sector(s)",
                    IATIValue = (iatiActivity.sector?.Count() ?? 0) + " Sector(s)",
                    IsSourceIATI = isSourceIATI

                });
                Fields.Add(new FieldMap
                {
                    Field = IatiFields.Location,
                    AIMSValue = (aimsProject.location?.Count() ?? 0) + " Location(s)",
                    IATIValue = (iatiActivity.location?.Count() ?? 0) + " Location(s)",
                    IsSourceIATI = isSourceIATI

                });
                Fields.Add(new FieldMap
                {
                    Field = IatiFields.ExecutingAgency,
                    AIMSValue = (aimsProject.ImplementingOrgs?.Count() ?? 0) + " Implementing Organization(s)",
                    IATIValue = (iatiActivity.ImplementingOrgs?.Count(c=>c?.AllID != iatiActivity.AllID) ?? 0) + " Implementing Organization(s)",
                    IsSourceIATI = isSourceIATI

                });

                //Transactions-------------------------------
                TransactionFields.Add(new FieldMap
                {
                    Field = IatiFields.Commitment,
                    AIMSValue = aimsProject.TotalCommitmentThisDPOnly,
                    IATIValue = iatiActivity.TotalCommitmentThisDPOnly
                });
                TransactionFields.Add(new FieldMap
                {
                    Field = IatiFields.Disbursment,
                    AIMSValue = aimsProject.TotalDisbursmentThisDPOnly,
                    IATIValue = iatiActivity.TotalDisbursmentThisDPOnly
                });
                TransactionFields.Add(new FieldMap
                {
                    Field = IatiFields.PlannedDisbursment,
                    AIMSValue = aimsProject.TotalPlannedDisbursment,
                    IATIValue = iatiActivity.TotalPlannedDisbursment
                });
            }

        }
Esempio n. 13
0
        private void DeleteTransactions(tblProjectInfo p, iatiactivity MatchedProject)
        {
            //Commitments
            if (MatchedProject.IsPlannedDisbursmentIncluded)
            {
                var aimsCommitments = p.tblProjectFundingCommitments.Where(w => w.FundSourceId == MatchedProject.AimsFundSourceId).ToList();

                foreach (var cc in aimsCommitments)
                {
                    dbContext.tblProjectFundingCommitments.Remove(cc);
                }
            }
            //PlannedDisbursements
            if (MatchedProject.IsPlannedDisbursmentIncluded)
            {
                var planDisb = p.tblProjectFundingPlannedDisbursements.Where(w => w.FundSourceId == MatchedProject.AimsFundSourceId).ToList();
                foreach (var cc in planDisb)
                {
                    dbContext.tblProjectFundingPlannedDisbursements.Remove(cc);
                }
            }
            //Disbursements
            if (MatchedProject.IsDisbursmentIncluded)
            {
                var aimsDisbursements = p.tblProjectFundingActualDisbursements.Where(w => w.FundSourceId == MatchedProject.AimsFundSourceId).ToList();

                foreach (var cc in aimsDisbursements)
                {
                    dbContext.tblProjectFundingActualDisbursements.Remove(cc);
                }

                var aimsExp = p.tblProjectFundingExpenditures.Where(w => w.FundSourceId == MatchedProject.AimsFundSourceId).ToList();

                foreach (var cc in aimsExp)
                {
                    dbContext.tblProjectFundingExpenditures.Remove(cc);
                }
            }
        }
Esempio n. 14
0
        private void UpdateTransactions(string Iuser, IQueryable<CurrencyLookupItem> aimsCurrencies, IQueryable<AidCategoryLookupItem> aimsAidCategories, string defaultfinancetype, tblProjectInfo p, iatiactivity MatchedProject)
        {
            #region Commitments
            if (MatchedProject.IsCommitmentIncluded)
            {
                foreach (var trn in MatchedProject.CommitmentsThisDPOnly)
                {

                    var aimsCommitment = new tblProjectFundingCommitment();
                    p.tblProjectFundingCommitments.Add(aimsCommitment);

                    aimsCommitment.IDate = DateTime.Now;
                    aimsCommitment.IUser = Iuser;
                    aimsCommitment.IsCommitmentTrustFund = false;

                    //ToDo for co-finance projects it may be different
                    aimsCommitment.FundSourceId = MatchedProject.AimsFundSourceId;

                    aimsCommitment.CommitmentAgreementSignDate = trn.transactiondate?.isodate.ToSqlDateTimeNull();

                    var aimsCurrency = aimsCurrencies.FirstOrDefault(f => f.IATICode == trn.value.currency);
                    aimsCommitment.CommitmentMaidCurrencyId = aimsCurrency == null ? 1 : aimsCurrency.Id;
                    aimsCommitment.CommittedAmount = trn.value.Value;

                    aimsCommitment.CommitmentEffectiveDate = trn.value?.BBexchangeRateDate;
                    aimsCommitment.ExchangeRateToUSD = trn.value?.BBexchangeRateUSD ?? default(decimal);
                    aimsCommitment.CommittedAmountInUSD = trn.value?.ValueInUSD;

                    aimsCommitment.ExchangeRateToBDT = trn.value?.BBexchangeRateBDT ?? default(decimal);
                    aimsCommitment.CommittedAmountInBDT = trn.value?.ValueInBDT;

                    aimsCommitment.Remarks = MatchedProject.IsDataSourceAIMS ? trn.description?.narrative.n(0).Value : "Importerd From IATI: " + trn.description?.narrative.n(0).Value;
                    aimsCommitment.VerificationRemarks = "Importerd From IATI: ";

                    //AidCategory
                    if (trn.financetype != null && trn.financetype.code.Length > 1)
                        defaultfinancetype = trn.financetype.code.StartsWith("4") ? "400" : "100";

                    var aimsAidCategory = aimsAidCategories.FirstOrDefault(f => f.IATICode == defaultfinancetype);
                    aimsCommitment.AidCategoryId = aimsAidCategory == null ? 1 : aimsAidCategory.Id;
                }
            }
            #endregion

            #region PlannedDisbursements
            if (MatchedProject.IsPlannedDisbursmentIncluded)
            {



                foreach (var trn in MatchedProject.PlannedDisbursments)
                {
                    var aimsPlanDisbursment = new tblProjectFundingPlannedDisbursement();
                    p.tblProjectFundingPlannedDisbursements.Add(aimsPlanDisbursment);

                    aimsPlanDisbursment.IDate = DateTime.Now;
                    aimsPlanDisbursment.IUser = Iuser;
                    aimsPlanDisbursment.IsPlannedDisbursementTrustFund = false;

                    //ToDo for co-finance projects it may be different
                    aimsPlanDisbursment.FundSourceId = MatchedProject.AimsFundSourceId;

                    aimsPlanDisbursment.PlannedDisbursementPeriodFromDate = trn.periodstart?.isodate.ToSqlDateTimeNull();
                    aimsPlanDisbursment.PlannedDisbursementPeriodToDate = trn.periodend?.isodate.ToSqlDateTimeNull();

                    var aimsCurrency = aimsCurrencies.FirstOrDefault(f => f.IATICode == trn.value.currency);
                    aimsPlanDisbursment.PlannedDisbursementCurrencyId = aimsCurrency == null ? 1 : aimsCurrency.Id;
                    aimsPlanDisbursment.PlannedDisburseAmount = trn.value.Value;

                    aimsPlanDisbursment.PlannedDisburseExchangeRateToUSD = trn.value?.BBexchangeRateUSD ?? default(decimal);
                    aimsPlanDisbursment.PlannedDisburseAmountInUSD = trn.value?.ValueInUSD;

                    aimsPlanDisbursment.PlannedDisburseExchangeRateToBDT = trn.value?.BBexchangeRateBDT ?? default(decimal);
                    aimsPlanDisbursment.PlannedDisburseAmountInBDT = trn.value?.ValueInBDT;

                    //aimsPlanDisbursment.VerificationRemarks = project.IsDataSourceAIMS ? trn.description?.narrative.n(0).Value : "Importerd From IATI: " + trn.description?.narrative.n(0).Value;
                    aimsPlanDisbursment.VerificationRemarks = "Importerd From IATI: ";

                    //AidCategory
                    var aimsAidCategory = aimsAidCategories.FirstOrDefault(f => f.IATICode.StartsWith(defaultfinancetype));
                    aimsPlanDisbursment.AidCategoryId = aimsAidCategory == null ? 1 : aimsAidCategory.Id;

                }
            }
            #endregion

            #region Disbursements
            if (MatchedProject.IsDisbursmentIncluded)
            {


                foreach (var trn in MatchedProject.DisbursmentsThisDPOnly)
                {
                    var aimsDisbursment = new tblProjectFundingActualDisbursement();
                    p.tblProjectFundingActualDisbursements.Add(aimsDisbursment);

                    aimsDisbursment.IDate = DateTime.Now;
                    aimsDisbursment.IUser = Iuser;
                    aimsDisbursment.IsDisbursedTrustFund = false;

                    //ToDo for co-finance projects it may be different
                    aimsDisbursment.FundSourceId = MatchedProject.AimsFundSourceId;

                    aimsDisbursment.DisbursementDate = trn.transactiondate?.isodate ?? default(DateTime).ToSqlDateTime();
                    aimsDisbursment.DisbursementToDate = trn.transactiondate?.isodate.ToSqlDateTimeNull();

                    var aimsCurrency = aimsCurrencies.FirstOrDefault(f => f.IATICode == trn.value.currency);
                    aimsDisbursment.DisbursedCurrencyId = aimsCurrency == null ? 1 : aimsCurrency.Id;
                    aimsDisbursment.DisbursedAmount = trn.value.Value;

                    aimsDisbursment.DisbursedExchangeRateToUSD = trn.value?.BBexchangeRateUSD ?? default(decimal);
                    aimsDisbursment.DisbursedAmountInUSD = trn.value?.ValueInUSD;

                    aimsDisbursment.DisbursedExchangeRateToBDT = trn.value?.BBexchangeRateBDT ?? default(decimal);
                    aimsDisbursment.DisbursedAmountInBDT = trn.value?.ValueInBDT;

                    aimsDisbursment.Remarks = MatchedProject.IsDataSourceAIMS ? trn.description?.narrative.n(0).Value : "Importerd From IATI: " + trn.description?.narrative.n(0).Value;
                    aimsDisbursment.VerificationRemarks = "Importerd From IATI: ";

                    //AidCategory
                    if (trn.financetype != null && trn.financetype.code.Length > 1)
                        defaultfinancetype = trn.financetype.code.StartsWith("4") ? "400" : "100";

                    var aimsAidCategory = aimsAidCategories.FirstOrDefault(f => f.IATICode == defaultfinancetype);
                    aimsDisbursment.AidCategoryId = aimsAidCategory == null ? 1 : aimsAidCategory.Id;

                }
            }
            #endregion
        }
Esempio n. 15
0
        private iatiactivity ConvertAimsToIati(tblProjectInfo project)
        {
            var iatiActivityObj = new iatiactivity();

            iatiActivityObj.IsDataSourceAIMS = true;
            iatiActivityObj.IsCofinancedProject = project.IsCofundedProject ?? false;

            iatiActivityObj.AllID = project.FundSourceId + "~" + (project.tblFundSource?.IATICode ?? "") + "~"
                                + (int)ExecutingAgencyType.DP + "~"
                                + project.tblFundSource?.FundSourceCategoryId;

            iatiActivityObj.ProjectId = project.Id;
            //iati-activity
            iatiActivityObj.lastupdateddatetime = DateTime.Now;
            iatiActivityObj.lang = "en";
            iatiActivityObj.defaultcurrency = Statix.Currency;
            iatiActivityObj.hierarchy = 1;
            //linked-data-uri

            //iati-identifier
            iatiActivityObj.iatiidentifier = new iatiidentifier { Value = getIdentifer(project) };

            //reporting-org
            iatiActivityObj.reportingorg = new reportingorg
            {
                @ref = project.tblFundSource?.IATICode,
                type = project.tblFundSource?.tblFundSourceCategory?.IATICode,
                //secondary-reporter
                narrative = Statix.getNarativeArray(project.tblFundSource?.FundSourceName),
            };

            //title
            iatiActivityObj.title = new textRequiredType { narrative = Statix.getNarativeArray(project.Title) };
            //description
            iatiActivityObj.description = new iatiactivityDescription[1] { new iatiactivityDescription { narrative = Statix.getNarativeArray(project.Objective) } };

            //participating-org
            List<participatingorg> participatingorgList = new List<participatingorg>();
            participatingorgList.Add(new participatingorg
            {
                narrative = Statix.getNarativeArray(project.tblFundSource?.FundSourceGroup),
                role = "1",
                @ref = project.tblFundSource?.IATICode,
                type = project.tblFundSource?.tblFundSourceCategory?.IATICode,
            });

            participatingorgList.Add(new participatingorg
            {
                narrative = Statix.getNarativeArray(project.tblFundSource?.FundSourceName),
                role = "3",
                @ref = project.tblFundSource?.IATICode,
                type = project.tblFundSource?.tblFundSourceCategory?.IATICode,
            });

            if (project.tblProjectExecutingAgencies != null)
                foreach (var executingAgency in project.tblProjectExecutingAgencies)
                {
                    participatingorgList.Add(new participatingorg
                    {
                        narrative = Statix.getNarativeArray("N/A"),
                        role = "4",
                        @ref = "N/A",
                        type = "N/A",
                    });
                }

            //ToDo
            //iatiActivity.participatingorg[2] = new participatingorg
            //{
            //    narrative = getNarativeArray(project.tblFundSource.FundSourceName),
            //    role = "1",
            //    @ref = project.tblFundSource.IATICode,
            //    type = "10"
            //};
            iatiActivityObj.participatingorg = participatingorgList.ToArray();

            //other-identifier

            //activity-status
            iatiActivityObj.activitystatus = new activitystatus { code = project.tblImplementationStatu.IATICode };

            //activity-date
            List<activitydate> activitydateList = new List<activitydate>();
            activitydateList.Add(new activitydate { type = "1", isodate = project.PlannedProjectStartDate ?? default(DateTime) });
            activitydateList.Add(new activitydate { type = "2", isodate = project.ActualProjectStartDate ?? default(DateTime) });
            activitydateList.Add(new activitydate { type = "3", isodate = project.PlannedProjectCompletionDate ?? default(DateTime) });
            activitydateList.Add(new activitydate { type = "4", isodate = project.RevisedProjectCompletionDate ?? default(DateTime) });
            iatiActivityObj.activitydate = activitydateList.ToArray();

            //contact-info
            List<contactinfo> contactinfoList = new List<contactinfo>();
            contactinfoList.Add(new contactinfo //DP
            {
                type = "1",
                organisation = new textRequiredType { narrative = Statix.getNarativeArray(project.tblFundSource?.FundSourceName) },
                department = new textRequiredType { narrative = Statix.getNarativeArray(project.tblFundSource?.FundSourceName) },
                personname = new textRequiredType { narrative = Statix.getNarativeArray(project.FocalPointDPContactName) },
                jobtitle = new textRequiredType { narrative = Statix.getNarativeArray(project.FocalPointDPContactDesignation) },
                telephone = new List<contactinfoTelephone> { new contactinfoTelephone { Value = project.FocalPointDPContactTelephone } }.ToArray(),
                email = new List<contactinfoEmail> { new contactinfoEmail { Value = project.FocalPointDPContactEmail } }.ToArray(),
                website = new List<contactinfoWebsite> { new contactinfoWebsite { Value = project.FocalPointDPContactAddress } }.ToArray(),
                mailingaddress = new List<textRequiredType> { new textRequiredType { narrative = Statix.getNarativeArray(project.FocalPointDPContactAddress) } }.ToArray()
            });
            contactinfoList.Add(new contactinfo //GoB
            {
                type = "2",
                organisation = new textRequiredType { narrative = Statix.getNarativeArray(Statix.RecipientCountryName) },
                department = new textRequiredType { narrative = Statix.getNarativeArray("PD") },
                personname = new textRequiredType { narrative = Statix.getNarativeArray(project.FocalPointGoBContactName) },
                jobtitle = new textRequiredType { narrative = Statix.getNarativeArray(project.FocalPointGoBContactDesignation) },
                telephone = new List<contactinfoTelephone> { new contactinfoTelephone { Value = project.FocalPointGoBContactTelephone } }.ToArray(),
                email = new List<contactinfoEmail> { new contactinfoEmail { Value = project.FocalPointGoBContactEmail } }.ToArray(),
                website = new List<contactinfoWebsite> { new contactinfoWebsite { Value = project.FocalPointGoBContactAddress } }.ToArray(),
                mailingaddress = new List<textRequiredType> { new textRequiredType { narrative = Statix.getNarativeArray(project.FocalPointGoBContactAddress) } }.ToArray()
            });
            iatiActivityObj.contactinfo = contactinfoList.ToArray();

            //activity-scope

            //recipient-country
            List<recipientcountry> recipientcountryList = new List<recipientcountry>();
            recipientcountryList.Add(new recipientcountry { code = Statix.RecipientCountry, narrative = Statix.getNarativeArray(Statix.RecipientCountryName), percentage = 100 });
            iatiActivityObj.recipientcountry = recipientcountryList.ToArray();

            //recipient-region

            //location
            List<location> locationList = new List<location>();
            var locations = project.tblProjectGeographicAllocations.ToList();
            foreach (var location in locations)
            {
                locationList.Add(new location
                {
                    name = new textRequiredType { narrative = Statix.getNarativeArray(location.DistrictId.ToString()) },
                });
            }
            iatiActivityObj.location = locationList.ToArray();

            //sector
            List<sector> sectorList = new List<sector>();
            var sectors = project.tblProjectSectoralAllocations.ToList();
            foreach (var sector in sectors)
            {
                sectorList.Add(new sector
                {
                    narrative = Statix.getNarativeArray(sector.TotalCommitmentPercent.ToString())
                });
            }
            iatiActivityObj.sector = sectorList.ToArray();

            //country-budget-items

            //humanitarian-scope

            //policy-marker

            //collaboration-type

            //default-flow-type

            //default-finance-type

            //default-aid-type
            iatiActivityObj.defaultaidtype = new defaultaidtype { code = project.tblAssistanceType?.IATICode };

            //default-tied-status

            //budget

            //planned-disbursement
            List<planneddisbursement> planneddisbursementList = new List<planneddisbursement>();
            var planneddisbursements = project.tblProjectFundingPlannedDisbursements.ToList();
            foreach (var pd in planneddisbursements)
            {
                planneddisbursementList.Add(new planneddisbursement
                {
                    type = "1", //1=Origin, 2=Revised 
                    periodstart = new planneddisbursementPeriodstart { isodate = pd.PlannedDisbursementPeriodFromDate ?? DateTime.MinValue },
                    periodend = new planneddisbursementPeriodend { isodate = pd.PlannedDisbursementPeriodToDate ?? DateTime.MinValue },
                    value = new currencyType { currency = Statix.Currency, Value = pd.PlannedDisburseAmountInUSD ?? 0, valuedate = pd.PlannedDisbursementPeriodFromDate ?? DateTime.MinValue, ValueInUSD = pd.PlannedDisburseAmountInUSD ?? 0 },

                    providerorg = new planneddisbursementProviderorg
                    {
                        @ref = pd.tblFundSource?.IATICode,
                        provideractivityid = project.IatiIdentifier,
                        narrative = Statix.getNarativeArray(pd.tblFundSource?.FundSourceName),
                        type = pd.tblFundSource?.tblFundSourceCategory?.IATICode
                    },

                    receiverorg = new planneddisbursementReceiverorg
                    {
                        receiveractivityid = project.IatiIdentifier,
                        @ref = project.tblFundSource?.IATICode,
                        narrative = Statix.getNarativeArray(project.tblFundSource?.FundSourceName),
                        type = project.tblFundSource?.tblFundSourceCategory?.IATICode,
                    }

                });
            }

            iatiActivityObj.planneddisbursement = planneddisbursementList.ToArray();

            //capital-spend

            #region Transaction
            //Transaction
            List<transaction> transactions = new List<transaction>();

            //Commitment
            var commitments = project.tblProjectFundingCommitments.ToList();
            foreach (var commitment in commitments)
            {
                transaction tr = new transaction();
                tr.transactiontype = new transactionTransactiontype { code = ConvertIATIv2.gettransactionCode("C") };
                var date = commitment.CommitmentAgreementSignDate ?? project.AgreementSignDate;
                tr.transactiondate = new transactionTransactiondate { isodate = date };
                tr.value = new currencyType { currency = Statix.Currency, valuedate = date, Value = Convert.ToDecimal(commitment.CommittedAmountInUSD), ValueInUSD = Convert.ToDecimal(commitment.CommittedAmountInUSD) }; //commitment.tblCurrency.IATICode

                tr.description = new textRequiredType { narrative = Statix.getNarativeArray(commitment.Remarks) };
                tr.providerorg = new transactionProviderorg
                {
                    @ref = commitment.tblFundSource?.IATICode,
                    provideractivityid = project.IatiIdentifier,
                    narrative = Statix.getNarativeArray(commitment.tblFundSource?.FundSourceName),
                    type = commitment.tblFundSource?.tblFundSourceCategory?.IATICode
                };
                tr.receiverorg = new transactionReceiverorg
                {
                    @ref = project.tblFundSource?.IATICode,
                    receiveractivityid = project.IatiIdentifier,
                    narrative = Statix.getNarativeArray(project.tblFundSource?.FundSourceName),
                    type = project.tblFundSource?.tblFundSourceCategory?.IATICode
                };

                //<disbursement-channel code="1" />
                tr.disbursementchannel = new transactionDisbursementchannel { code = Statix.DisbursementChannel }; //Money is disbursed directly to the implementing institution and managed through a separate bank account

                //<sector vocabulary="2" code="111" />

                //<recipient-country code="AF" />  <!--Note: only a recipient-region OR a recipient-country is expected-->
                tr.recipientcountry = new transactionRecipientcountry { code = Statix.RecipientCountry };

                //<recipient-region code="456" vocabulary="1" />

                //<flow-type code="10" />
                tr.flowtype = new transactionFlowtype { code = Statix.FlowType };

                //<finance-type code="110" /> //110= Aid grant excluding debt reorganisation, 410 = Aid loan excluding debt reorganisation
                tr.financetype = new transactionFinancetype { code = commitment.tblAidCategory?.IATICode };

                //<aid-type code="A01" /> 
                tr.aidtype = new transactionAidtype { code = project.tblAssistanceType?.IATICode };

                //<tied-status code="3" />
                tr.tiedstatus = new transactionTiedstatus { code = project.tblAIDEffectivenessIndicators.Where(q => q.AEISurveyYear == date.Year).ToList().n(0).tblAIDEffectivenessResourceTiedType?.IATICode };


                iatiActivityObj.IsTrustFundedProject = commitment.IsCommitmentTrustFund ?? false;

                transactions.Add(tr);
            }

            //Actual Disbusement
            var actualDisbursements = project.tblProjectFundingActualDisbursements.ToList();
            foreach (var actualDisbursement in actualDisbursements)
            {
                transaction tr = new transaction();
                tr.transactiontype = new transactionTransactiontype { code = ConvertIATIv2.gettransactionCode("D") };
                var date = actualDisbursement.DisbursementToDate ?? actualDisbursement.DisbursementDate;
                tr.transactiondate = new transactionTransactiondate { isodate = date };
                tr.value = new currencyType { currency = Statix.Currency, valuedate = date, Value = Convert.ToDecimal(actualDisbursement.DisbursedAmountInUSD), ValueInUSD = Convert.ToDecimal(actualDisbursement.DisbursedAmountInUSD) }; //actualDisbursement.tblCurrency.IATICode

                tr.description = new textRequiredType { narrative = Statix.getNarativeArray(actualDisbursement.Remarks) };
                tr.providerorg = new transactionProviderorg
                {
                    @ref = actualDisbursement.tblFundSource?.IATICode,
                    provideractivityid = project.IatiIdentifier,
                    narrative = Statix.getNarativeArray(actualDisbursement.tblFundSource?.FundSourceName),
                    type = actualDisbursement.tblFundSource?.tblFundSourceCategory?.IATICode

                };
                tr.receiverorg = new transactionReceiverorg
                {
                    @ref = project.tblFundSource?.IATICode,
                    receiveractivityid = project.IatiIdentifier,
                    narrative = Statix.getNarativeArray(project.tblFundSource?.FundSourceName),
                    type = project.tblFundSource?.tblFundSourceCategory?.IATICode

                };

                //<disbursement-channel code="1" />
                tr.disbursementchannel = new transactionDisbursementchannel { code = Statix.DisbursementChannel };

                //<sector vocabulary="2" code="111" />

                //<recipient-country code="AF" />  <!--Note: only a recipient-region OR a recipient-country is expected-->
                tr.recipientcountry = new transactionRecipientcountry { code = Statix.RecipientCountry };

                //<recipient-region code="456" vocabulary="1" />

                //<flow-type code="10" />
                tr.flowtype = new transactionFlowtype { code = Statix.FlowType };

                //<finance-type code="110" /> //110= Aid grant excluding debt reorganisation, 410 = Aid loan excluding debt reorganisation
                tr.financetype = new transactionFinancetype { code = actualDisbursement.tblAidCategory?.IATICode };

                //<aid-type code="A01" /> 
                tr.aidtype = new transactionAidtype { code = project.tblAssistanceType?.IATICode };

                //<tied-status code="3" />
                tr.tiedstatus = new transactionTiedstatus { code = project.tblAIDEffectivenessIndicators.Where(q => q.AEISurveyYear == date.Year).ToList().n(0).tblAIDEffectivenessResourceTiedType?.IATICode };

                transactions.Add(tr);
            }

            //Expenditure
            var expenditures = project.tblProjectFundingExpenditures.ToList();
            foreach (var expenditure in expenditures)
            {
                transaction tr = new transaction();
                tr.transactiontype = new transactionTransactiontype { code = ConvertIATIv2.gettransactionCode("E") };
                var date = expenditure.ExpenditureReportingPeriodToDate; //?? expenditure.ExpenditureReportingPeriodFromDate;
                tr.transactiondate = new transactionTransactiondate { isodate = date };
                tr.value = new currencyType { currency = Statix.Currency, valuedate = date, Value = expenditure.ExpenditureAmountInUSD ?? 0, ValueInUSD = expenditure.ExpenditureAmountInUSD ?? 0 }; //expenditure.tblCurrency.IATICode

                tr.description = new textRequiredType { narrative = Statix.getNarativeArray(expenditure.Remarks) };
                tr.providerorg = new transactionProviderorg
                {
                    @ref = expenditure.tblFundSource?.IATICode,
                    provideractivityid = project.IatiIdentifier,
                    narrative = Statix.getNarativeArray(expenditure.tblFundSource?.FundSourceName),
                    type = expenditure.tblFundSource?.tblFundSourceCategory?.IATICode

                };
                tr.receiverorg = new transactionReceiverorg
                {
                    @ref = project.tblFundSource?.IATICode,
                    receiveractivityid = project.IatiIdentifier,
                    narrative = Statix.getNarativeArray(project.tblFundSource?.FundSourceName),
                    type = project.tblFundSource?.tblFundSourceCategory?.IATICode
                };

                //<disbursement-channel code="1" />
                tr.disbursementchannel = new transactionDisbursementchannel { code = Statix.DisbursementChannel };

                //<sector vocabulary="2" code="111" />

                //<recipient-country code="AF" />  <!--Note: only a recipient-region OR a recipient-country is expected-->
                tr.recipientcountry = new transactionRecipientcountry { code = Statix.RecipientCountry };

                //<recipient-region code="456" vocabulary="1" />

                //<flow-type code="10" />
                tr.flowtype = new transactionFlowtype { code = Statix.FlowType };

                //<finance-type code="110" /> //110= Aid grant excluding debt reorganisation, 410 = Aid loan excluding debt reorganisation
                tr.financetype = new transactionFinancetype { code = expenditure.tblAidCategory?.IATICode };

                //<aid-type code="A01" /> 
                tr.aidtype = new transactionAidtype { code = project.tblAssistanceType?.IATICode };

                //<tied-status code="3" />
                tr.tiedstatus = new transactionTiedstatus { code = project.tblAIDEffectivenessIndicators.Where(q => q.AEISurveyYear == date.Year).ToList().n(0).tblAIDEffectivenessResourceTiedType?.IATICode };

                transactions.Add(tr);
            }

            //Assign all transaction
            iatiActivityObj.transaction = transactions.ToArray();
            #endregion

            //document-link
            List<documentlink> documentlinkList = new List<documentlink>();
            var documents = project.tblProjectAttachments.ToList();
            foreach (var document in documents)
            {
                List<documentlinkLanguage> documentlinkLanguageList = new List<documentlinkLanguage>();
                documentlinkLanguageList.Add(new documentlinkLanguage { code = Statix.Language });

                List<documentlinkCategory> documentlinkCategoryList = new List<documentlinkCategory>();
                documentlinkCategoryList.Add(new documentlinkCategory { code = document.tblDocumentCategory?.IATICode });

                documentlinkList.Add(new documentlink
                {
                    url = document.AttachmentFileURL ?? Statix.DocumentURL + document.Id,
                    //format = 
                    title = new textRequiredType { narrative = Statix.getNarativeArray(document.AttachmentTitle) },
                    language = documentlinkLanguageList.ToArray(),
                    category = documentlinkCategoryList.ToArray()
                });
            }
            iatiActivityObj.documentlink = documentlinkList.ToArray();

            //related-activity

            //legacy-data

            //conditions

            //result

            //crs-add

            //fss


            return iatiActivityObj;
        }
Esempio n. 16
0
        private bool CheckTransactionMismatch(tblProjectInfo p, iatiactivity MatchedProject, bool checkMismatch = true)
        {
            if (!checkMismatch) return false;

            bool isFinancialDataMismathed = false;
            #region Commitments
            if (MatchedProject.IsCommitmentIncluded)
            {
                var aimsCommitments = p.tblProjectFundingCommitments.Where(w => w.FundSourceId == MatchedProject.AimsFundSourceId).ToList();

                var iatiCommitments = MatchedProject.CommitmentsThisDPOnly;

                #region Checking transaction mismatch
                if (aimsCommitments.Count > iatiCommitments.Count)
                    foreach (var aimsCommitment in aimsCommitments)
                    {
                        var trandate = aimsCommitment.CommitmentAgreementSignDate ?? p.AgreementSignDate;

                        var notExistInIATI = !iatiCommitments.Exists(e => e.transactiondate?.isodate.Date == trandate && Math.Floor(e.ValUSD) == Math.Floor(aimsCommitment.CommittedAmountInUSD ?? 0));

                        isFinancialDataMismathed = true;

                        aimsDBIatiDAL.InsertLog(new Log
                        {
                            OrgId = MatchedProject.IATICode,
                            LogType = (int)LogType.FinancialDataMismathed,
                            DateTime = DateTime.Now,
                            IatiIdentifier = MatchedProject.IatiIdentifier,
                            ProjectId = p.Id,
                            Message = "Transactions (C) are mismatched between IATI and AIMS"
                        });

                    }
                #endregion Checking transaction mismatch

                return isFinancialDataMismathed;
            }
            #endregion

            #region Disbursements
            if (MatchedProject.IsDisbursmentIncluded)
            {

                var aimsDisbursements = p.tblProjectFundingActualDisbursements.Where(w => w.FundSourceId == MatchedProject.AimsFundSourceId).ToList();
                var iatiDisbursements = MatchedProject.DisbursmentsThisDPOnly;

                #region  Checking transaction mismatch
                if (aimsDisbursements.Count > iatiDisbursements.Count)
                    foreach (var aimsDisbursement in aimsDisbursements)
                    {
                        var trandate = aimsDisbursement.DisbursementToDate ?? aimsDisbursement.DisbursementDate;

                        var notExistInIATI = !iatiDisbursements.Exists(e => e.transactiondate?.isodate.Date == trandate && Math.Floor(e.ValUSD) == Math.Floor(aimsDisbursement.DisbursedAmountInUSD ?? 0));

                        isFinancialDataMismathed = true;

                        aimsDBIatiDAL.InsertLog(new Log
                        {
                            DateTime = DateTime.Now,
                            IatiIdentifier = MatchedProject.IatiIdentifier,
                            LogType = (int)LogType.FinancialDataMismathed,
                            ProjectId = p.Id,
                            OrgId = MatchedProject.IATICode,
                            Message = "Transactions (D) are mismatched between IATI and AIMS"
                        });

                    }

                #endregion  Checking transaction mismatch

                return isFinancialDataMismathed;

            }

            return false;
            #endregion
        }