private void TransferAreasIfNecessary(PageAreaTransferSettings transferDataModel, MonthPage nextPage) { nextPage.GoalsArea.TransferAreaDataIfNeeded(transferDataModel, GoalsArea); nextPage.DesiresArea.TransferAreaDataIfNeeded(transferDataModel, DesiresArea); nextPage.PurchasesArea.TransferAreaDataIfNeeded(transferDataModel, PurchasesArea); nextPage.IdeasArea.TransferAreaDataIfNeeded(transferDataModel, IdeasArea); }
/// <summary> /// Transfer page areas data from passed month page /// </summary> /// <param name="transferDataModel">Transfer data model</param> /// <param name="monthPage">Month page</param> public void MergePageAreas(PageAreaTransferSettings transferDataModel, MonthPage monthPage) { Guard.Against.Null(transferDataModel, nameof(transferDataModel)); Guard.Against.Null(monthPage, nameof(monthPage)); monthPage.TransferAreasIfNecessary(transferDataModel, this); }
/// <summary> /// Transfer data from passed area to this area if it's needed according to the transfer model /// </summary> /// <typeparam name="T">Type of month page area</typeparam> /// <param name="pageAreaReceiver">Page area that will receive data</param> /// <param name="transferDataModel">Transfer model</param> /// <param name="pageAreaSource">Page area source of data</param> public static void TransferAreaDataIfNeeded <T>(this T pageAreaReceiver, PageAreaTransferSettings transferDataModel, T pageAreaSource) where T : MonthPageArea, IMonthPageArea <T> { bool transfer = transferDataModel.GetValueForArea <T>(); if (transfer) { pageAreaReceiver.AddDataFromOtherArea(pageAreaSource); } }
/// <summary> /// Creates new month page for next month /// </summary> /// <param name="transferDataModel">Model that represents which page areas need to be transferred</param> public MonthPage TransferDataToNextMonth(PageAreaTransferSettings transferDataModel) { Guard.Against.Null(transferDataModel, nameof(transferDataModel)); var(year, month) = GetNextPageDate(); var nextPage = new MonthPage(year, month, User); //initialize only non transferring areas nextPage.DesiresArea = new DesiresArea(nextPage, !transferDataModel.TransferDesiresArea); nextPage.GoalsArea = new GoalsArea(nextPage, !transferDataModel.TransferGoalsArea); nextPage.PurchasesArea = new PurchasesArea(nextPage, !transferDataModel.TransferPurchasesArea); nextPage.IdeasArea = new IdeasArea(nextPage, !transferDataModel.TransferIdeasArea); TransferAreasIfNecessary(transferDataModel, nextPage); return(nextPage); }