Beispiel #1
0
        public static Proc_PrepareClosureMemo_Result Proc_PrepareClosureMemo(string projectId)
        {
            var db     = new McdAMEntities();
            var result = db.Proc_PrepareClosureMemo(projectId).FirstOrDefault();

            return(result);
        }
Beispiel #2
0
        public static List <Proc_ProjectHistory_Result> Proc_GetProjectHistory(string projectId, string tableName, bool hasTemplate)
        {
            var db     = new McdAMEntities();
            var result = db.Proc_GetProjectHistory(projectId, tableName, hasTemplate).ToList();

            return(result);
        }
Beispiel #3
0
        public IHttpActionResult Authority(string usCode)
        {
            bool enableView = false;
            bool enableEdit = false;

            var adminUsers = Employee.GetEmployeesByRole(RoleCode.System_Admin);

            if (adminUsers.Any(i => i.Code == ClientCookie.UserCode))
            {
                enableView = true;
                enableEdit = true;
            }
            else
            {
                var storeInfo = StoreBasicInfo.GetStorInfo(usCode);
                using (var amdb = new McdAMEntities())
                {
                    var org = amdb.Organization.FirstOrDefault(i => i.Code == storeInfo.RegionCode && i.Type == 102);
                    if (org.DL.HasValue && org.DL.Value)
                    {
                        enableView = true;
                        var repUsers = Employee.GetStoreAssetRepByStoreCode(usCode);
                        if (repUsers.Any(i => i.Code == ClientCookie.UserCode))
                        {
                            enableEdit = true;
                        }
                    }
                }
            }
            return(Ok(new
            {
                EnableView = enableView,
                EnableEdit = enableEdit
            }));
        }
Beispiel #4
0
        public static List <Proc_GetProjectProcess_Result> Proc_GetProjectProcess(string projectId)
        {
            var db     = new McdAMEntities();
            var result = db.Proc_GetProjectProcess(projectId).ToList();

            return(result);
        }
Beispiel #5
0
        public ActionResult StoreSTMonthlyFinaceInfoQuery(string _USCode)
        {
            McdAMEntities amdb    = new McdAMEntities();
            var           storeId = amdb.StoreBasicInfo.Where(s => s.StoreCode.Equals(_USCode)).Select(id => id.StoreID).FirstOrDefault();
            var           item    = amdb.DataSync_LDW_AM_STMonthlyFinaceInfo.Where(f => f.StoreID == storeId).OrderByDescending(f => f.Year).FirstOrDefault();

            var yearMonthObj = amdb.StoreSTMonthlyFinaceInfoTTM.FirstOrDefault();
            var financeYear  = GetLatestYear();
            var financeMonth = GetLatestMonth();

            if (yearMonthObj != null && !string.IsNullOrEmpty(yearMonthObj.TTMValue))
            {
                financeYear  = yearMonthObj.TTMValue.Substring(0, yearMonthObj.TTMValue.IndexOf('-'));
                financeMonth = yearMonthObj.TTMValue.Substring(yearMonthObj.TTMValue.IndexOf('-') + 1);
            }
            var financeData  = amdb.DataSync_LDW_AM_STFinanceData.Where(f => f.UsCode == _USCode && f.FinanceYear.Equals(financeYear) && f.FinanceMonth.Equals(financeMonth)).FirstOrDefault();
            var financeData2 = amdb.DataSync_LDW_AM_STFinanceData2.Where(f => f.UsCode == _USCode && f.FinanceYear.Equals(financeYear) && f.FinanceMonth.Equals(financeMonth)).FirstOrDefault();

            if (item == null)
            {
                item = new DataSync_LDW_AM_STMonthlyFinaceInfo();
            }

            //  界面展示逻辑调整
            // (金额精确到小数点后2位)
            item.NetProductSales      = Convert.ToString(Math.Round(Convert.ToDecimal(item.NetProductSales), 2));
            item.CashFlow             = Convert.ToString(Math.Round(Convert.ToDecimal(item.CashFlow), 2));
            item.SOI                  = Convert.ToString(Math.Round(Convert.ToDecimal(item.SOI), 2));
            item.Rent                 = Convert.ToString(Math.Round(Convert.ToDecimal(item.Rent), 2));
            item.McOpCoMargin         = Convert.ToString(Math.Round(Convert.ToDecimal(item.McOpCoMargin), 2));
            item.Rent_inclAdjustment  = Convert.ToString(Math.Round(Convert.ToDecimal(item.Rent_inclAdjustment), 2));
            item.LHINBV               = Convert.ToString(Math.Round(Convert.ToDecimal(item.LHINBV), 2));
            item.ESSDNBV              = Convert.ToString(Math.Round(Convert.ToDecimal(item.ESSDNBV), 2));
            item.TotalNBV             = Convert.ToString(Math.Round(Convert.ToDecimal(item.TotalNBV), 2));
            item.SOIPreYr1            = Convert.ToString(Math.Round(Convert.ToDecimal(item.SOIPreYr1), 2));
            item.SOIPreYr2            = Convert.ToString(Math.Round(Convert.ToDecimal(item.SOIPreYr2), 2));
            item.SOIPreYr3            = Convert.ToString(Math.Round(Convert.ToDecimal(item.SOIPreYr3), 2));
            item.CashFlowPreYr1       = Convert.ToString(Math.Round(Convert.ToDecimal(item.CashFlowPreYr1), 2));
            item.CashFlowPreYr2       = Convert.ToString(Math.Round(Convert.ToDecimal(item.CashFlowPreYr2), 2));
            item.CashFlowPreYr3       = Convert.ToString(Math.Round(Convert.ToDecimal(item.CashFlowPreYr3), 2));
            item.RentalPaidtoLLPreYr1 = Convert.ToString(Math.Round(Convert.ToDecimal(item.RentalPaidtoLLPreYr1), 2));
            item.RentalPaidtoLLPreYr2 = Convert.ToString(Math.Round(Convert.ToDecimal(item.RentalPaidtoLLPreYr2), 2));
            item.RentalPaidtoLLPreYr3 = Convert.ToString(Math.Round(Convert.ToDecimal(item.RentalPaidtoLLPreYr3), 2));

            // (百分比精确到小数点后1位)
            item.SOIPct = Convert.ToString(Math.Round(100 * Convert.ToDecimal(item.SOIPct), 1));
            item.Rent_inclAdjustmentPct = Convert.ToString(Math.Round(100 * Convert.ToDecimal(item.Rent_inclAdjustmentPct), 1));
            //item.CompsSales = Convert.ToString(Math.Round(100 * Convert.ToDecimal(item.CompsSales), 1));
            item.CompSalePreYr1 = Convert.ToString(Math.Round(100 * Convert.ToDecimal(item.CompSalePreYr1), 1));
            item.CompSalePreYr2 = Convert.ToString(Math.Round(100 * Convert.ToDecimal(item.CompSalePreYr2), 1));
            item.CompSalePreYr3 = Convert.ToString(Math.Round(100 * Convert.ToDecimal(item.CompSalePreYr3), 1));
            item.CompsSales     = Convert.ToString(Math.Round(100 * Convert.ToDecimal(financeData2.comp_sales_ttm), 1));

            string result = JsonConvert.SerializeObject(item);

            return(Content(result));
        }
Beispiel #6
0
        public List <Pipeline> SearchPipelineId(string queryString, int pageSize, string storeCode)
        {
            List <Pipeline> list = new List <Pipeline>();
            McdAMEntities   db   = new McdAMEntities();

            list = db.Database.SqlQuery <Pipeline>(string.Format(@"
select PipelineID,PipelineCode,PipelineNameZHCN,PipelineNameENUS
from StoreBasicInfo where MarketCode in 
(select MarketCode from StoreBasicInfo where StoreCode='{1}')
and PipelineCode like '%{0}%'
", queryString, storeCode)).Take(5).ToList();
            return(list);
        }
Beispiel #7
0
        public ReinvestmentBasicInfo GetReinvestmentBasicInfo(string projectId)
        {
            ReinvestmentBasicInfo reinvestmentBasicInfo;

            using (var context = new McdAMEntities())
            {
                var result = (from mlc in context.ReimageConsInfo
                              join rbi in context.ReinvestmentBasicInfo on mlc.Id equals rbi.ConsInfoID
                              where mlc.ProjectId == projectId && !mlc.IsHistory
                              select rbi).Distinct().AsEnumerable();
                reinvestmentBasicInfo = result.FirstOrDefault();
            }
            return(reinvestmentBasicInfo);
        }
        public IHttpActionResult Search(string sourceCode, string refTableName, Guid refTableId)
        {
            if (refTableId == Guid.Empty)
            {
                return(Ok());
            }
            //var list = ProjectComment.Search(e => e.RefTableName == refTableName
            //   && e.SourceCode == sourceCode && e.RefTableId == refTableId && e.Status == ProjectCommentStatus.Submit)
            //   .OrderBy(e => e.CreateTime).ToList();
            var db   = new McdAMEntities();
            var list = db.VProjectComment.Where(e => e.RefTableName == refTableName &&
                                                e.SourceCode == sourceCode && e.RefTableId == refTableId && e.Status == (int)ProjectCommentStatus.Submit).OrderBy(e => e.CreateTime).ToList();

            return(Ok(list));
        }
Beispiel #9
0
        /// <summary>
        /// Original Data Operation
        /// </summary>
        /// <param name="refTableId"></param>
        /// <param name="projectId"></param>
        /// <param name="financeYearMonth"> TTM Financial Data : Data Month</param>
        /// <param name="lastyear"></param>
        /// <param name="lastmonth"></param>
        public static void OriginalDataOperation(Guid refTableId, string projectId, string financeYearMonth, string lastyear, string lastmonth)
        {
            if (string.IsNullOrEmpty(projectId))
            {
                return;
            }

            string        financeYear;
            string        financeMonth;
            McdAMEntities amdb = new McdAMEntities();

            if (!string.IsNullOrEmpty(financeYearMonth))
            {
                financeYear  = financeYearMonth.Split('-')[0];
                financeMonth = financeYearMonth.Split('-')[1];

                var ldw_financeData = GetByRefId(refTableId);
                if (ldw_financeData == null)
                {
                    AddFinancialData(refTableId, projectId, financeYear, financeMonth);
                }
                else if (ldw_financeData.FinanceYear != financeYear || ldw_financeData.FinanceMonth != financeMonth)
                {
                    UpdateFinancialData(refTableId, projectId, financeYear, financeMonth);
                }
            }
            else
            {
                var yearMonthObj = amdb.StoreSTMonthlyFinaceInfoTTM.FirstOrDefault();
                if (yearMonthObj != null && !string.IsNullOrEmpty(yearMonthObj.TTMValue))
                {
                    financeYear  = yearMonthObj.TTMValue.Substring(0, yearMonthObj.TTMValue.IndexOf('-'));
                    financeMonth = yearMonthObj.TTMValue.Substring(yearMonthObj.TTMValue.IndexOf('-') + 1);
                }
                else
                {
                    financeYear  = lastyear;
                    financeMonth = lastmonth;
                }
                if (!CheckIfInFinanceData(projectId))
                {
                    AddFinancialData(refTableId, projectId, financeYear, financeMonth);
                }
            }
        }
Beispiel #10
0
        public static IQueryable <T> Search <Tkey>(McdAMEntities context, Expression <Func <T, bool> > predicate, Expression <Func <T, Tkey> > orderByPredicate, int pageIndex, int pageSize, out int totalRecords, bool IsDesc = false) where Tkey : IComparable
        {
            var query = context.Set <T>();
            IOrderedQueryable <T> result;

            if (IsDesc)
            {
                result = query.Where(predicate).OrderByDescending(orderByPredicate);
            }
            else
            {
                result = query.Where(predicate).OrderBy(orderByPredicate);
            }
            totalRecords = query.Count(predicate);
            var entities = result.Skip(pageSize * (pageIndex - 1)).Take(pageSize);

            return(entities);
        }
Beispiel #11
0
        public IHttpActionResult GetSelectYearMonth(string projectId)
        {
            using (var amdb = new McdAMEntities())
            {
                var selectItemList = new List <SelectItem>();
                var uscode         = ReimageInfo.FirstOrDefault(e => e.ProjectId == projectId).USCode;

                var reimageSummary = ReimageSummary.GetReimageSummaryInfo(projectId);
                if (reimageSummary != null)
                {
                    var refId = reimageSummary.Id;
                    var storeProfitabilityAndLeaseInfo =
                        StoreProfitabilityAndLeaseInfo.FirstOrDefault(e => e.RefId == refId);

                    var asOf            = storeProfitabilityAndLeaseInfo != null ? storeProfitabilityAndLeaseInfo.AsOf : string.Empty;
                    var yearMonthList   = amdb.DataSync_LDW_AM_STFinanceData2.Where(f => f.UsCode == uscode).Select(i => new { financeYearMonth = i.FinanceYear + "-" + i.FinanceMonth }).Distinct().OrderByDescending(i => i.financeYearMonth).Take(12).ToList();
                    var ldw_financeData = LDW_FinanceData.Get(projectId);
                    foreach (var _yearMonth in yearMonthList)
                    {
                        var selectItem = new SelectItem();
                        selectItem.name  = _yearMonth.financeYearMonth;
                        selectItem.value = _yearMonth.financeYearMonth;
                        if (ldw_financeData != null)
                        {
                            selectItem.selected = _yearMonth.financeYearMonth == ldw_financeData.FinanceYear + "-" + ldw_financeData.FinanceMonth;
                        }
                        else
                        {
                            // selectItem.selected = false;
                            selectItem.selected = _yearMonth.financeYearMonth == asOf;
                        }
                        selectItemList.Add(selectItem);
                    }
                    if (string.IsNullOrEmpty(asOf) && selectItemList.Count > 0)
                    {
                        selectItemList[0].selected = true;
                    }
                }

                return(Ok(new { data = selectItemList }));
            }
        }
Beispiel #12
0
        public static RenewalToolDTO InitPage(string projectId, string id = null)
        {
            RenewalToolDTO dto       = new RenewalToolDTO();
            var            tool      = RenewalTool.Get(projectId, id);
            var            project   = ProjectInfo.Get(projectId, FlowCode.Renewal_Tool);
            var            info      = RenewalInfo.Get(projectId);
            var            isFinance = ClientCookie.UserCode == info.FinanceAccount;

            tool.IsProjectFreezed = tool.CheckIfFreezeProject(projectId);
            var    nextRefTableId    = new Guid(FlowInfo.GetRefTableId("RenewalAnalysis", projectId));
            var    nextFlowStarted   = ProjectInfo.IsFlowStarted(projectId, FlowCode.Renewal_Analysis);
            var    haveTask          = TaskWork.Any(t => t.RefID == projectId && t.TypeCode == FlowCode.Renewal_Tool && t.Status == TaskWorkStatus.UnFinish && t.ReceiverAccount == ClientCookie.UserCode);
            var    projectComment    = ProjectComment.GetSavedComment(tool.Id, "RenewalTool", ClientCookie.UserCode);
            var    projectNode       = NodeInfo.GetNodeInfo(project.NodeCode);
            var    packageStarted    = ProjectInfo.IsFlowStarted(projectId, FlowCode.Renewal_Package);
            string selectedYearMonth = null;

            dto.Info              = info;
            dto.Entity            = tool;
            dto.TTMDataYearMonths = RenewalToolFinMeasureInput.GetYearMonths(projectId, out selectedYearMonth);
            dto.FinMeasureInput   = RenewalToolFinMeasureInput.Get(projectId, dto.Entity.Id);
            if (string.IsNullOrEmpty(dto.FinMeasureInput.FinanceYear) || string.IsNullOrEmpty(dto.FinMeasureInput.FinanceMonth))
            {
                var ym = selectedYearMonth.Split('-');
                dto.FinMeasureInput.FinanceYear  = ym[0];
                dto.FinMeasureInput.FinanceMonth = ym[1];
            }
            dto.FinMeasureInput.FinanceDataYearMonth = dto.FinMeasureInput.FinanceYear + "-" + dto.FinMeasureInput.FinanceMonth;
            //dto.FinMeasureInput.ContributionMargin = StoreCM.Get(dto.Info.USCode).ContributionMargin;
            McdAMEntities amdb  = new McdAMEntities();
            var           finfo = amdb.DataSync_LDW_AM_STFinanceData2.FirstOrDefault(f => f.UsCode == dto.Info.USCode &&
                                                                                     f.FinanceYear == dto.FinMeasureInput.FinanceYear && f.FinanceMonth == dto.FinMeasureInput.FinanceMonth);
            decimal cm = 0;

            if (finfo != null && !string.IsNullOrEmpty(finfo.contribution_marginPct))
            {
                cm = decimal.Parse(finfo.contribution_marginPct);
            }
            dto.FinMeasureInput.ContributionMargin = cm;
            var coninfo = RenewalConsInfo.FirstOrDefault(e => e.ProjectId == projectId && !e.IsHistory);
            var conProj = ProjectInfo.FirstOrDefault(e => e.ProjectId == projectId && e.FlowCode == "Renewal_ConsInfo");

            dto.WriteOffAndReinCost = RenewalToolWriteOffAndReinCost.Get(projectId, dto.Entity.Id, projectNode);
            if (coninfo != null && !coninfo.HasReinvenstment)
            {
                dto.WriteOffAndReinCost.REWriteOff   = null;
                dto.WriteOffAndReinCost.LHIWriteOff  = null;
                dto.WriteOffAndReinCost.ESSDWriteOff = null;
                dto.WriteOffAndReinCost.ESSDWriteOff = null;
                dto.WriteOffAndReinCost.RECost       = null;
                dto.WriteOffAndReinCost.LHICost      = null;
                dto.WriteOffAndReinCost.ESSDCost     = null;
            }

            dto.Uploadable     = projectNode.Sequence >= 3 && ClientCookie.UserCode == dto.Info.AssetActorAccount && !packageStarted;
            dto.ProjectComment = projectComment != null ? projectComment.Content : "";
            dto.Editable       = ProjectInfo.IsFlowEditable(projectId, FlowCode.Renewal_Tool);
            dto.Recallable     = ProjectInfo.IsFlowRecallable(projectId, FlowCode.Renewal_Tool);
            dto.Savable        = ProjectInfo.IsFlowSavable(projectId, FlowCode.Renewal_Tool) && string.IsNullOrEmpty(id);
            dto.IsFinished     =
                ProjectInfo.Any(
                    e =>
                    e.ProjectId == projectId && e.FlowCode == FlowCode.Renewal_Tool &&
                    e.Status == ProjectStatus.Finished);
            return(dto);
        }
Beispiel #13
0
        /// <summary>
        /// Update LDW_FinanceData
        /// </summary>
        /// <param name="refTableId"></param>
        /// <param name="projectId"></param>
        /// <param name="financeYear"></param>
        /// <param name="financeMonth"></param>
        /// <returns></returns>
        private static int UpdateFinancialData(Guid refTableId, string projectId, string financeYear, string financeMonth)
        {
            McdAMEntities amdb = new McdAMEntities();

            var uscode       = ClosureInfo.FirstOrDefault(ci => ci.ProjectId == projectId).USCode;
            var storeId      = amdb.StoreBasicInfo.Where(s => s.StoreCode.Equals(uscode)).Select(id => id.StoreID).FirstOrDefault();
            var financeData  = amdb.DataSync_LDW_AM_STFinanceData.Where(f => f.UsCode == uscode && f.FinanceYear.Equals(financeYear) && f.FinanceMonth.Equals(financeMonth)).FirstOrDefault();
            var financeData2 = amdb.DataSync_LDW_AM_STFinanceData2.Where(f => f.UsCode == uscode && f.FinanceYear.Equals(financeYear) && f.FinanceMonth.Equals(financeMonth)).FirstOrDefault();

            var ldw_FinanceData = GetByRefId(refTableId);

            ldw_FinanceData.StoreID                     = storeId;
            ldw_FinanceData.UsCode                      = uscode;
            ldw_FinanceData.FinanceYear                 = financeYear;
            ldw_FinanceData.FinanceMonth                = financeMonth;
            ldw_FinanceData.Total_Sales_TTM             = financeData.Total_Sales_TTM;
            ldw_FinanceData.Rent_TTM                    = financeData2.Rent_TTM;
            ldw_FinanceData.comp_sales_ttm              = financeData2.comp_sales_ttm;
            ldw_FinanceData.comp_sales_market_ttm       = financeData2.comp_sales_market_ttm;
            ldw_FinanceData.comp_gc_ttm                 = financeData2.comp_gc_ttm;
            ldw_FinanceData.comp_gc_market_ttm          = financeData2.comp_gc_market_ttm;
            ldw_FinanceData.Pac_TTM                     = financeData2.Pac_TTM;
            ldw_FinanceData.PACPct_TTM                  = financeData2.PACPct_TTM;
            ldw_FinanceData.PACPct_MARKET_TTM           = financeData2.PACPct_MARKET_TTM;
            ldw_FinanceData.Depreciation_LHI_TTM        = financeData2.Depreciation_LHI_TTM;
            ldw_FinanceData.Interest_LHI_TTM            = financeData2.Interest_LHI_TTM;
            ldw_FinanceData.Service_Fee_TTM             = financeData2.Service_Fee_TTM;
            ldw_FinanceData.Insurance_TTM               = financeData2.Insurance_TTM;
            ldw_FinanceData.Accounting_TTM              = financeData2.Accounting_TTM;
            ldw_FinanceData.Taxes_Licenses_TTM          = financeData2.Taxes_Licenses_TTM;
            ldw_FinanceData.Depreciation_Essd_TTM       = financeData2.Depreciation_Essd_TTM;
            ldw_FinanceData.Interest_Essd_TTM           = financeData2.Interest_Essd_TTM;
            ldw_FinanceData.Other_Exp_TTM               = financeData2.Other_Exp_TTM;
            ldw_FinanceData.ProductSales_TTM            = financeData.ProductSales_TTM;
            ldw_FinanceData.Non_Product_Sales_TTM       = financeData2.Non_Product_Sales_TTM;
            ldw_FinanceData.Non_Product_Costs_TTM       = financeData2.Non_Product_Costs_TTM;
            ldw_FinanceData.SOIPct_TTM                  = financeData.SOIPct_TTM;
            ldw_FinanceData.SOIPct_MARKET_TTM           = financeData2.SOIPct_MARKET_TTM;
            ldw_FinanceData.CashFlow_TTM                = financeData2.CASH_FLOW_TTM;
            ldw_FinanceData.Total_Sales_TTMPY1          = financeData2.Total_Sales_TTMPY1;
            ldw_FinanceData.Total_Sales_TTMPY2          = financeData2.Total_Sales_TTMPY2;
            ldw_FinanceData.comp_sales_ttm_py1          = financeData2.comp_sales_ttm_py1;
            ldw_FinanceData.comp_sales_ttm_py2          = financeData2.comp_sales_ttm_py2;
            ldw_FinanceData.comp_sales_market_ttm_py1   = financeData2.comp_sales_market_ttm_py1;
            ldw_FinanceData.comp_sales_market_ttm_py2   = financeData2.comp_sales_market_ttm_py2;
            ldw_FinanceData.comp_gc_ttm_py1             = financeData2.comp_gc_ttm_py1;
            ldw_FinanceData.comp_gc_ttm_py2             = financeData2.comp_gc_ttm_py2;
            ldw_FinanceData.comp_gc_market_ttm_py1      = financeData2.comp_gc_market_ttm_py1;
            ldw_FinanceData.comp_gc_market_ttm_py2      = financeData2.comp_gc_market_ttm_py2;
            ldw_FinanceData.PAC_TTMPreviousY1           = financeData2.PAC_TTMPreviousY1;
            ldw_FinanceData.PAC_TTMPreviousY2           = financeData2.PAC_TTMPreviousY2;
            ldw_FinanceData.PACPct_MARKET_TTMPreviousY1 = financeData2.PACPct_MARKET_TTMPreviousY1;
            ldw_FinanceData.PACPct_MARKET_TTMPreviousY2 = financeData2.PACPct_MARKET_TTMPreviousY2;
            ldw_FinanceData.SOI_TTMPreviousY1           = financeData2.SOI_TTMPreviousY1;
            ldw_FinanceData.SOI_TTMPreviousY2           = financeData2.SOI_TTMPreviousY2;
            ldw_FinanceData.SOIPct_MARKET_TTMPreviousY1 = financeData2.SOIPct_MARKET_TTMPreviousY1;
            ldw_FinanceData.SOIPct_MARKET_TTMPreviousY2 = financeData2.SOIPct_MARKET_TTMPreviousY2;
            ldw_FinanceData.Cash_Flow_TTMPreviousY1     = financeData2.Cash_Flow_TTMPreviousY1;
            ldw_FinanceData.Cash_Flow_TTMPreviousY2     = financeData2.Cash_Flow_TTMPreviousY2;

            return(ldw_FinanceData.Update());
        }
Beispiel #14
0
        public IHttpActionResult Send(PostClosureMemoModel model)
        {
            var actor = ProjectUsers.GetProjectUser(model.Entity.ProjectId, ProjectUserRoleCode.AssetActor);

            using (TransactionScope tranScope = new TransactionScope())
            {
                Save(model.Entity);
                ClosureTool closureTool        = ClosureTool.FirstOrDefault(ct => ct.ProjectId == model.Entity.ProjectId);
                string      compensationAwards = "";
                string      compensation       = "暂无数据";
                if (closureTool != null && closureTool.Compensation.HasValue)
                {
                    compensationAwards = closureTool.Compensation.Value > 0 ? "Yes" : "No";
                    compensation       = closureTool.Compensation.Value.ToString("N");
                }
                Dictionary <string, string> pdfData = new Dictionary <string, string>();
                pdfData.Add("WorkflowName", "Closure");
                pdfData.Add("ProjectID", model.Entity.ProjectId);
                pdfData.Add("RegionNameENUS", model.Entity.RegionNameENUS);
                pdfData.Add("RegionNameZHCN", model.Entity.RegionNameZHCN);
                pdfData.Add("MarketNameENUS", model.Entity.MarketNameENUS);
                pdfData.Add("MarketNameZHCN", model.Entity.MarketNameZHCN);
                pdfData.Add("ProvinceNameENUS", model.Entity.ProvinceNameENUS);
                pdfData.Add("ProvinceNameZHCN", model.Entity.ProvinceNameZHCN);
                pdfData.Add("CityNameENUS", model.Entity.CityNameENUS);
                pdfData.Add("CityNameZHCN", model.Entity.CityNameZHCN);
                pdfData.Add("StoreNameENUS", model.Entity.StoreNameENUS);
                pdfData.Add("StoreNameZHCN", model.Entity.StoreNameZHCN);
                pdfData.Add("StoreAddressENUS", model.Entity.StoreAddressENUS);
                pdfData.Add("StoreAddressZHCN", model.Entity.StoreAddressZHCN);
                pdfData.Add("USCode", model.Entity.USCode);
                pdfData.Add("OpenDate", model.Entity.OpenDate.Value.ToString("yyyy-MM-dd"));
                pdfData.Add("ClosureDate", model.Entity.ClosureDate.Value.ToString("yyyy-MM-dd"));
                pdfData.Add("ClosureNature", model.Entity.ClosureNature.ToString());
                if (model.Entity.BecauseOfReimaging.HasValue)
                {
                    pdfData.Add("BecauseOfReimaging", model.Entity.BecauseOfReimaging.Value ? "Yes" : "No");
                }
                else
                {
                    pdfData.Add("BecauseOfReimaging", "");
                }

                if (model.Entity.BecauseOfRemodel.HasValue)
                {
                    pdfData.Add("BecauseOfRemodel", model.Entity.BecauseOfRemodel.Value ? "Yes" : "No");
                }
                else
                {
                    pdfData.Add("BecauseOfRemodel", "");
                }

                if (model.Entity.BecauseOfDespute.HasValue)
                {
                    pdfData.Add("BecauseOfDespute", model.Entity.BecauseOfDespute.Value ? "Yes" : "No");
                }
                else
                {
                    pdfData.Add("BecauseOfDespute", "");
                }

                if (model.Entity.BecauseOfRedevelopment.HasValue)
                {
                    pdfData.Add("BecauseOfRedevelopment", model.Entity.BecauseOfRedevelopment.Value ? "Yes" : "No");
                }
                else
                {
                    pdfData.Add("BecauseOfRedevelopment", "");
                }

                if (model.Entity.BecauseOfPlanedClosure.HasValue)
                {
                    pdfData.Add("BecauseOfPlanedClosure", model.Entity.BecauseOfPlanedClosure.Value ? "Yes" : "No");
                }
                else
                {
                    pdfData.Add("BecauseOfPlanedClosure", "");
                }

                if (model.Entity.BecauseOfRebuild.HasValue)
                {
                    pdfData.Add("BecauseOfRebuild", model.Entity.BecauseOfRebuild.Value ? "Yes" : "No");
                }
                else
                {
                    pdfData.Add("BecauseOfRebuild", "");
                }

                pdfData.Add("BecauseOfOthers", model.Entity.BecauseOfOthers);

                if (model.Entity.PermanentCloseOpportunity.HasValue)
                {
                    pdfData.Add("PermanentCloseOpportunity", model.Entity.PermanentCloseOpportunity.Value ? "Yes" : "No");
                }
                else
                {
                    pdfData.Add("PermanentCloseOpportunity", "");
                }

                if (model.Entity.HasRelocationPlan.HasValue)
                {
                    pdfData.Add("HasRelocationPlan", model.Entity.HasRelocationPlan.Value ? "Yes" : "No");
                }
                else
                {
                    pdfData.Add("HasRelocationPlan", "");
                }

                pdfData.Add("PipelineName", model.Entity.PipelineName);
                pdfData.Add("CompensationAwarded", compensationAwards);
                pdfData.Add("Compensation", compensation);
                string pdfPath = HtmlConversionUtility.HtmlConvertToPDF(HtmlTempalteType.ClosureMemo, pdfData, null);
                EmailSendingResultType result;
                //邮件模板中的数据
                Dictionary <string, string> bodyValues = new Dictionary <string, string>();
                //邮件内容中的键值对
                //bodyValues.Add("ApplicantName", ClientCookie.UserNameENUS);//--提交人
                bodyValues.Add("StoreCode", model.Entity.USCode);
                bodyValues.Add("StoreName", model.Entity.StoreNameENUS);
                bodyValues.Add("Actor", actor.RoleNameENUS);            ////--呈递人
                bodyValues.Add("WorkflowName", Constants.Closure_Memo); ////--流程名称
                bodyValues.Add("ProjectName", Constants.Closure);       //项目名称
                var webRootUrl = ConfigurationManager.AppSettings["webHost"];
                var viewPage   = string.Format("{0}Closure/Main#/ClosureMemo/ClosureMemoView?projectId={1}",
                                               webRootUrl, model.Entity.ProjectId);
                bodyValues.Add("FormUrl", viewPage);

                //调用邮件服务发送邮件
                using (EmailServiceClient client = new EmailServiceClient())
                {
                    EmailMessage  message = new EmailMessage();
                    StringBuilder sbTo    = new StringBuilder();
                    Dictionary <string, string> attachments = new Dictionary <string, string>();
                    foreach (Employee emp in model.Receivers)
                    {
                        if (sbTo.Length > 0)
                        {
                            sbTo.Append(";");
                        }
                        if (!string.IsNullOrEmpty(emp.Mail))
                        {
                            sbTo.Append(emp.Mail);
                        }
                    }
                    if (sbTo.Length > 0)
                    {
                        sbTo.Append(";");
                    }
                    message.EmailBodyValues = bodyValues;
                    attachments.Add(pdfPath, model.Entity.USCode + " " + FlowCode.Closure_Memo + ".pdf");
                    message.AttachmentsDict = attachments;
                    message.To           = sbTo.ToString();
                    message.TemplateCode = EmailTemplateCode.GBMemoNotification;
                    result = client.SendNotificationEmail(message);
                }

                if (!result.Successful)
                {
                    return(BadRequest(result.ErrorMessage + " " + pdfPath));
                }

                //store关闭不在这里设置,需要判断project状态和closuredata
                //var store = StoreBasicInfo.GetStorInfo(model.Entity.USCode);
                //store.StoreStatus = "suoya301003";
                //store.statusName = "Closed";
                //store.Update();


                if (model.Entity.ClosureNature == ClosureNatureType.Permanent)
                {
                    //选项为永久关闭并且发送成功后关闭任务
                    McdAMEntities _db  = new McdAMEntities();
                    var           task = _db.TaskWork.FirstOrDefault(e => e.ReceiverAccount == ClientCookie.UserCode && e.Status == 0 && e.SourceCode == FlowCode.Closure && e.TypeCode == FlowCode.Closure_Memo && e.RefID == model.Entity.ProjectId);
                    if (task != null)
                    {
                        task.Status     = TaskWorkStatus.K2ProcessApproved;
                        task.FinishTime = DateTime.Now;
                        task.Url        = SiteInfo.GetProjectViewPageUrl(FlowCode.Closure_Memo, task.RefID);

                        //var enableExecutiveSummary = handler.EnableExecutiveSummary(entity.ProjectId.Value);

                        _db.TaskWork.Attach(task);
                        _db.Entry(task).State = EntityState.Modified;
                        _db.SaveChanges();

                        ProjectInfo.FinishNode(model.Entity.ProjectId, FlowCode.Closure_Memo, NodeCode.Closure_ClosureMemo_Input);
                        ProjectInfo.FinishNode(model.Entity.ProjectId, FlowCode.Closure_Memo, NodeCode.Closure_ClosureMemo_SendMemo, ProjectStatus.Finished);

                        #region Memo完成后,设定计划任务
                        var closureConsInvtChecking = new ClosureConsInvtChecking();
                        closureConsInvtChecking.GenerateConsInvtCheckingTask(model.Entity.ProjectId);

                        if (model.Entity.ClosureDate.HasValue)
                        {
                            ScheduleLog.UpdateStoreStatusSchedule(model.Entity.USCode, model.Entity.ProjectId, model.Entity.ClosureDate.Value, ClientCookie.UserCode);
                        }
                        #endregion
                    }
                    ProjectInfo.CompleteMainIfEnable(model.Entity.ProjectId);
                }
                tranScope.Complete();
                return(Ok());
            }
        }
Beispiel #15
0
        public IHttpActionResult DownLoadTemplate(string projectId)
        {
            var current = System.Web.HttpContext.Current;
            //string path = SiteFilePath.Template_DIRECTORY + "\\" + SiteFilePath.FAWrite_offTool_Template;


            //Excel excel = new Excel();
            //string templatePath = path;

            //string tempFilePath = current.Server.MapPath("~/") + "Temp\\" + Guid.NewGuid() + ".xls";

            //var closure = ClosureInfo.GetByProjectId(projectId);
            //excel.Open(path);
            //excel.Save(tempFilePath);

            //var store = StoreBasicInfo.FirstOrDefault(e => e.StoreCode == closure.USCode);


            //Excel tempExcel = new Excel();
            //tempExcel.Open(tempFilePath);
            //var sheet = tempExcel.Sheets["PMT"];

            //sheet.Cells[1, 1].StrValue = store.RegionENUS;
            //sheet.Cells[2, 1].StrValue = store.MarketENUS;
            //sheet.Cells[3, 1].StrValue = store.NameZHCN;
            //sheet.Cells[4, 1].StrValue = closure.USCode;
            //sheet.Cells[5, 1].StrValue = store.StoreTypeName;
            //if (closure.ActualCloseDate != null)
            //{
            //    sheet.Cells[6, 1].StrValue = closure.ActualCloseDate.Value.ToString("yyyy-MM-dd");
            //}
            //sheet.Cells[7, 1].StrValue = "";//TODO::-Cary  GetPM

            //sheet.Cells[0, 7].StrValue = ConsInvtCheckingVersion;

            //tempExcel.Save(tempFilePath);


            //直接下载writeoff文件
            McdAMEntities _db         = new McdAMEntities();
            var           closureInfo = ClosureInfo.GetByProjectId(projectId);
            var           wo          = ClosureWOCheckList.Get(projectId);

            if (wo != null)
            {
                var att = _db.Attachment.FirstOrDefault(a => a.RefTableID == wo.Id.ToString() && a.TypeCode == "Template");

                string absolutePath = current.Server.MapPath("~/") + "UploadFiles/" + att.InternalName;
                string tempFilePath = current.Server.MapPath("~/") + "Temp\\" + Guid.NewGuid() + Path.GetExtension(absolutePath);

                File.Copy(absolutePath, tempFilePath);
                ExcelHelper.UpdateExcelVersionNumber(tempFilePath, ConsInvtCheckingVersion);

                var currentNode = NodeInfo.GetCurrentNode(projectId, FlowCode.Closure_ConsInvtChecking);
                var newNode     = NodeInfo.GetNodeInfo(NodeCode.Closure_ConsInvtChecking_DownLoadTemplate);
                if (newNode.Sequence > currentNode.Sequence)
                {
                    ProjectInfo.FinishNode(projectId, FlowCode.Closure_ConsInvtChecking, NodeCode.Closure_ConsInvtChecking_DownLoadTemplate);
                }

                current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + SiteFilePath.GetTemplateFileName(closureInfo.USCode, FlowCode.Closure_ConsInvtChecking, SiteFilePath.FAWrite_offTool_Template));
                current.Response.ContentType = "application/octet-stream";
                current.Response.WriteFile("" + tempFilePath + "");
                current.Response.End();
            }
            else
            {
                string path = SiteFilePath.Template_DIRECTORY + "\\" + SiteFilePath.FAWrite_offTool_Template;
                current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + SiteFilePath.GetTemplateFileName(closureInfo.USCode, FlowCode.Closure_ConsInvtChecking, SiteFilePath.FAWrite_offTool_Template));
                current.Response.ContentType = "application/octet-stream";
                current.Response.WriteFile("" + path + "");
                current.Response.End();
            }
            return(Ok());
        }
Beispiel #16
0
 public void ShareDbContextFrom(BaseAbstractEntity entity)
 {
     _db = entity.GetDb();
 }