示例#1
0
 public void LogWarning(int planId, string message)
 {
     using (var context = new DisneyHCMLatamPlanningEntities())
     {
         var log = new SBForecastPlanLog {
             Date = DateTime.Now, Message = message, SBForecastPlanId = planId, TypeId = 2
         };
         context.SBForecastPlanLogs.AddObject(log);
         context.SaveChanges();
     }
 }
        public static Engine.Core.ExpenseType ToModel(this ExpenseType expenseType)
        {
            var context = new DisneyHCMLatamPlanningEntities();

            return(new Engine.Core.ExpenseType()
            {
                Id = expenseType.ExpenseTypeId,
                Code = expenseType.Code,
                Description = expenseType.Description,
                IsActive = expenseType.IsActive,
                ExpenseGroup = (context.ExpenseGroups.FirstOrDefault(e => e.ExpenseGroupId == expenseType.ExpenseGroupId)).ToModel()
            });
        }
        public static Concept ToDbModel(this Concept <decimal> concept, DisneyHCMLatamPlanningEntities context)
        {
            var conceptDb = context
                            .Concepts
                            .Include("Parameter1")
                            .Include("Parameter2")
                            .Include("Parameter3")
                            .Include("Parameter4")
                            .Include("Output1")
                            .Include("Output2")
                            .Include("ConceptFilters.Filter")
                            .Include("ConceptFilters.Filter.Parameter")
                            .Include("ConceptFilters.Filter.Parameter1")
                            .FirstOrDefault(p => p.ConceptId == concept.Id);

            conceptDb = conceptDb ?? new Concept();

            conceptDb.Scheme = context.Schemes.FirstOrDefault(s => s.SchemeId == concept.Scheme.Id);

            conceptDb.Description = concept.Description;

            conceptDb.Title = concept.Title;

            conceptDb.Sequence = concept.Sequence;

            conceptDb.Operation = concept.GetOperationText();

            if (concept.GLAccount != null)
            {
                conceptDb.GLAccount = context.GLAccounts.FirstOrDefault(gl => gl.GLAccountId == concept.GLAccount.Id);
            }
            else
            {
                conceptDb.GLAccount = null;
            }

            #region Valid Months

            SyncValidMonths(conceptDb, concept, context);

            #endregion

            #region Filters

            conceptDb.ConceptFilters.ToList().ForEach(r => context.ConceptFilters.DeleteObject(r));

            foreach (var filter in concept.ConceptFilters)
            {
                Filter <decimal, bool> filter1 = filter;
                var conceptFilter = new ConceptFilter();

                conceptFilter.Filter = new Filter();

                if (filter.Connector != null)
                {
                    conceptFilter.Connector = new Operation().GetOperator(filter.Connector.GetOperator().ToString());
                }

                conceptFilter.Sequence = filter.Sequence;

                conceptFilter.Filter.Description = filter.Description;
                conceptFilter.Filter.Operation   = new Operation().GetOperator(filter.Operation.GetOperator().ToString());
                conceptFilter.Filter.Title       = filter.Name;

                conceptFilter.Filter.FilterType =
                    context.FilterTypes.FirstOrDefault(ft => ft.FilterTypeId == filter1.FilterType);

                conceptFilter.Filter.Parameter =
                    context.Parameters.FirstOrDefault(p => p.ParameterId == filter1.Parameter1.Id);

                if (filter.Parameter2.ParameterType == FromDisney.ParameterType.FixedValue)
                {
                    Parameter parameter = null;
                    if (filter.Parameter2.Id == 0)
                    {
                        parameter = context.Parameters.FirstOrDefault(x => x.FixedValue == filter1.Parameter2.FixedValue);
                        if (parameter != null)
                        {
                            conceptFilter.Filter.Parameter1 = parameter;
                        }
                        else
                        {
                            conceptFilter.Filter.Parameter1 = new Parameter
                            {
                                Name =
                                    "CONSTANT_" +
                                    filter1.Parameter2.FixedValue.ToString(),
                                Description   = "Created by System",
                                IsAccumulator = false,
                                Company       = conceptFilter.Filter.Parameter.Company
                            };
                        }
                    }
                    else
                    {
                        conceptFilter.Filter.Parameter1 = context.Parameters.FirstOrDefault(p => p.ParameterId == filter1.Parameter2.Id);
                    }

                    conceptFilter.Filter.Parameter1.ParameterType =
                        context.ParameterTypes.FirstOrDefault(
                            pt => pt.ParameterTypeId == (int)filter1.Parameter2.ParameterType);

                    conceptFilter.Filter.Parameter1.FixedValue = filter1.Parameter2.FixedValue;
                }
                else
                {
                    conceptFilter.Filter.Parameter1 = context.Parameters.FirstOrDefault(p => p.ParameterId == filter1.Parameter2.Id);
                }

                conceptDb.ConceptFilters.Add(conceptFilter);
            }

            #endregion

            #region Input y Output Parameters

            conceptDb.Output1 = concept.Output1 != null?context.Parameters.FirstOrDefault(p => p.ParameterId == concept.Output1.Id) : null;

            conceptDb.Output2 = concept.Output2 != null?context.Parameters.FirstOrDefault(p => p.ParameterId == concept.Output2.Id) : null;

            conceptDb.Parameter1 = concept.Parameter1 != null?context.Parameters.FirstOrDefault(p => p.ParameterId == concept.Parameter1.Id) : null;

            conceptDb.Parameter2 = concept.Parameter2 != null?context.Parameters.FirstOrDefault(p => p.ParameterId == concept.Parameter2.Id) : null;

            conceptDb.Parameter3 = concept.Parameter3 != null?context.Parameters.FirstOrDefault(p => p.ParameterId == concept.Parameter3.Id) : null;

            conceptDb.Parameter4 = concept.Parameter4 != null?context.Parameters.FirstOrDefault(p => p.ParameterId == concept.Parameter4.Id) : null;

            #endregion

            if (concept.ExpenseType != null)
            {
                conceptDb.ExpenseType =
                    context.ExpenseTypes.FirstOrDefault(et => et.ExpenseTypeId == concept.ExpenseType.Id);
            }

            return(conceptDb);
        }
        public static Parameter ToDbModel(this IGlobal <decimal> global, DisneyHCMLatamPlanningEntities context)
        {
            Parameter entity = context.Parameters.FirstOrDefault(p => p.ParameterId == global.Id);

            entity = entity ?? new Parameter();

            entity.ParameterId     = global.Id;
            entity.Name            = global.Name;
            entity.Description     = global.Description;
            entity.ParameterTypeId = (int)global.ParameterType;
            entity.CompanyId       = global.Company.Id;
            entity.IsAccumulator   = global.IsAccumulator;
            entity.IsConstant      = global.IsConstant;
            entity.IsModifiable    = global.IsModifiable;
            entity.TableName       = global.TableName;
            entity.ColumnName      = global.ColumnName;
            entity.FixedValue      = global.FixedValue;

            if (global.ParameterDataTypeId.HasValue)
            {
                entity.ParameterDataTypeID = (int)global.ParameterDataTypeId.Value;
            }

            if (global.ParameterType == FromDisney.ParameterType.Constant)
            {
                entity.ParameterValues.ToList().ForEach(r =>
                {
                    r.ParameterMonthValues.ToList().ForEach(pv => context.ParameterMonthValues.DeleteObject(pv));

                    context.ParameterValues.DeleteObject(r);
                });

                global.MonthlyParameter.ForEach(p =>
                {
                    #region MonthValues

                    var parameterMonthValues = new EntityCollection <ParameterMonthValue>();

                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.January, Value = p.Value[Month.January]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.February, Value = p.Value[Month.February]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.March, Value = p.Value[Month.March]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.April, Value = p.Value[Month.April]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.May, Value = p.Value[Month.May]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.June, Value = p.Value[Month.June]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.July, Value = p.Value[Month.July]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.August, Value = p.Value[Month.August]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.September, Value = p.Value[Month.September]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.October, Value = p.Value[Month.October]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.November, Value = p.Value[Month.November]
                    });
                    parameterMonthValues.Add(new ParameterMonthValue {
                        Month = (int)Month.December, Value = p.Value[Month.December]
                    });

                    #endregion MonthValues

                    entity.ParameterValues.Add(new ParameterValue
                    {
                        FiscalYearID         = p.FiscalYearId,
                        ParameterId          = p.Id,
                        ParameterMonthValues = parameterMonthValues
                    });
                });
            }


            return(entity);
        }
        public static IGlobal <decimal> ToModel(this Parameter parameter)
        {
            var context = new DisneyHCMLatamPlanningEntities();

            var global = new Global <decimal>
            {
                Name          = parameter.Name,
                Description   = parameter.Description,
                Id            = parameter.ParameterId,
                IsModifiable  = parameter.IsModifiable,
                IsAccumulator = parameter.IsAccumulator,
                IsConstant    = parameter.IsConstant,
                ParameterType = (FromDisney.ParameterType)parameter.ParameterTypeId,
                Company       = (context.Companies.FirstOrDefault(p => p.CompanyID == parameter.CompanyId).ToModel()),
                Value         = ForecastDataAccessService.SetDictionaryFromValue(0),
                TableName     = parameter.TableName,
                ColumnName    = parameter.ColumnName,
                FixedValue    = parameter.FixedValue,
            };

            if (parameter.ParameterDataTypeID.HasValue)
            {
                global.ParameterDataTypeId = parameter.ParameterDataTypeID.Value;
            }

            if (global.ParameterType == FromDisney.ParameterType.Constant)
            {
                global.MonthlyParameter = new List <MonthlyParameter <decimal> >();

                var monthlyValues = context.ParameterValues
                                    .Include("ParameterMonthValues.ParameterValue.FiscalYear")
                                    .Where(p => p.ParameterId == parameter.ParameterId)
                                    .ToList();

                monthlyValues.ForEach(x =>
                {
                    var monthlyParameter = new MonthlyParameter <decimal>
                    {
                        FiscalYearId   = x.FiscalYear.FiscalYearID,
                        FiscalYearCode = x.FiscalYear.Code,
                        Value          = new Dictionary <Month, decimal>()
                    };

                    for (int i = 1; i <= 12; i++)
                    {
                        decimal value = 0;

                        var result = x.ParameterMonthValues.FirstOrDefault(y => y.Month == i);
                        //try
                        //{
                        //    value = x.ParameterMonthValues.ToList()[i - 1].Value;
                        //}
                        //catch (Exception)
                        //{
                        //    value = 0;
                        //}

                        monthlyParameter.Value.Add((Month)i, result == null ? 0: result.Value);
                    }

                    global.MonthlyParameter.Add(monthlyParameter);
                });
            }

            return(global);
        }
        private static void SyncValidMonths(Concept conceptDb, Concept <decimal> concept, DisneyHCMLatamPlanningEntities context)
        {
            var months = Enum.GetValues(typeof(Month)).Cast <Month>().ToList();

            foreach (var month in months)
            {
                var conceptValidMonth = conceptDb.ConceptsValidMonths.FirstOrDefault(cvm => cvm.MonthId == (int)month);

                var value = concept.ValidMonths[month];

                if (value)
                {
                    if (conceptValidMonth == null)
                    {
                        conceptDb.ConceptsValidMonths.Add(new ConceptsValidMonth
                        {
                            MonthId = (int)month
                        });
                    }
                }
                else
                {
                    if (conceptValidMonth != null)
                    {
                        context.ConceptsValidMonths.DeleteObject(conceptValidMonth);
                    }
                }
            }
        }