Esempio n. 1
0
 public void Save(Deal deal)
 {
     var session = SessionManager.OpenSessionIfRequired(this.sessionFactory);
     using (var transaction = session.BeginTransaction())
     {
         session.SaveOrUpdate(deal);
         session.Transaction.Commit();
     }
 }
Esempio n. 2
0
        private DealViewModel Map(Deal deal)
        {
            Mapper.CreateMap<Deal, DealViewModel>();

            var dealViewModel = Mapper.Map<Deal, DealViewModel>(deal);

            if (dealViewModel.Comment == null || !(dealViewModel.Comment.StartsWith("{\\rtf") && dealViewModel.Comment.EndsWith("}")))
                dealViewModel.Comment = "{\\rtf" + dealViewModel.Comment + "}";

            if (dealViewModel.StartDate == DateTime.MinValue)
            {
                dealViewModel.StartDate = DateTime.Now;
            }

            if (dealViewModel.EndDate == DateTime.MinValue)
            {
                dealViewModel.EndDate = DateTime.Now;
            }

            dealViewModel.TotalPrice = 0;
            dealViewModel.TotalDays = 0;
            foreach (var project in deal.Projects)
            {
                foreach (var item in project.Supplies)
                {
                    dealViewModel.TotalPrice += item.Quantity * item.Price;
                }

                foreach (var item in project.Hardwares)
                {
                    // total price of components
                    dealViewModel.TotalPrice += item.Components.Sum(x => x.Supply.Price * x.Quantity);

                    foreach (var task in item.Tasks)
                    {
                        double rate = 0.0;
                        if (task.Task != null)
                        {
                            switch (task.HardwareTaskType)
                            {
                                case ProjectHardwareTaskType.DAY:
                                    rate = task.Task.DayRate;
                                    break;
                                case ProjectHardwareTaskType.SHORT_NIGHT:
                                    rate = task.Task.ShortNightRate;
                                    break;
                                case ProjectHardwareTaskType.LONG_NIGHT:
                                    rate = task.Task.LongNightRate;
                                    break;
                                default:
                                    throw new ArgumentOutOfRangeException();
                            }
                        }
                        dealViewModel.TotalPrice += rate * task.Value;
                        dealViewModel.TotalDays += task.Value;
                    }
                }

                dealViewModel.TotalPrice += project.OtherBenefits.Sum(x => x.Hours * x.CostRate);
                dealViewModel.TotalDays += project.OtherBenefits.Sum(x => x.Hours);
            }

            return dealViewModel;
        }