Ejemplo n.º 1
0
        private void FilloutBaseReport(ReportCreateViewModel model)
        {
            Task[] tasks =
            {
                Task.Factory.StartNew(() => FillOutEventBaseReport(model)),
                Task.Factory.StartNew(() => FillOutMembersBaseReport(model)),
                Task.Factory.StartNew(() => FillOutTransactionBaseReport(model))
            };

            Task.WaitAll(tasks);
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Create(ReportCreateViewModel report)
        {
            if (!ModelState.IsValid)
            {
                return(Json(ModelState.ToDictionary()));
            }

            await _reportServices.CreateReport(report, User.Identity.GetUserId());

            return(Json("STATUS_OK"));
        }
Ejemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="viewModel"></param>
        /// <returns></returns>
        public async Task CreateByViewModelAsync(ReportCreateViewModel viewModel)
        {
            var report = _mapper.Map <Report>(viewModel);

            var buffer = new byte[viewModel.ContentFile.InputStream.Length];

            viewModel.ContentFile.InputStream.Read(buffer, 0, buffer.Length);
            report.Content = Encoding.UTF8.GetString(buffer);

            _reportRepository.Add(report);

            await _unitOfWork.SaveAllChangesAsync(auditUserId : _httpContextManager.CurrentUserId());
        }
Ejemplo n.º 4
0
        private async Task FillOutEventBaseReport(ReportCreateViewModel model)
        {
            model.Reunions = await applicationContext.Occasions.OfType <Reunion>()
                             .Where(o => o.Date > DateTime.Today.AddMonths(-1))
                             .CountAsync();

            model.Reunions = await applicationContext.Occasions.OfType <Cell>()
                             .Where(o => o.Date > DateTime.Today.AddMonths(-1))
                             .CountAsync();


            var occasions = applicationContext.Occasions.OfType <Cult>()
                            .Where(o => o.Date > DateTime.Today.AddMonths(-1))
                            .Where(c => c.CultType.ToString() == model.ReportType.ToString());

            model.Convertions = await occasions.SumAsync(c => c.Convertions);
        }
Ejemplo n.º 5
0
        private async Task FillOutTransactionBaseReport(ReportCreateViewModel model)
        {
            var cults = applicationContext.Occasions
                        .OfType <Cult>()
                        .Where(o => o.Date > DateTime.Today.AddMonths(-1))
                        .Where(c => c.CultType.ToString() == model.ReportType.ToString());

            var trasactions = from c in cults
                              join t in applicationContext.Transactions on c.Id equals t.OccasionId
                              where t.Date > DateTime.Today.AddMonths(-1)
                              select t;


            //Fill out income
            var income = await trasactions
                         .Where(t => t.TransactionType == TransactionType.RECEITA)
                         .SumAsync(t => t.Value);

            model.Income = income;

            //Fill out expense
            var expense = await trasactions
                          .Where(t => t.TransactionType == TransactionType.DESPESA)
                          .SumAsync(t => t.Value);

            model.Expense = expense;

            //Fill out tenth

            trasactions = from c in cults
                          join t in applicationContext.Transactions.OfType <Revenue>()
                          .Where(t => t.RevenueType == RevenueType.DÍZIMO)
                          on c.Id equals t.OccasionId
                          where t.Date > DateTime.Today.AddMonths(-1)
                          select t;

            model.Tenth = await trasactions.SumAsync(t => t.Value);

            //Fill out balance
            model.Balance = income - expense;
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> AddReport(ReportCreateViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await userManager.FindByEmailAsync(User.Identity.Name);

                Report newReport = new Report(model.FirstName, model.LastName, model.Time)
                {
                    ApplicationUser   = user,
                    ApplicationUserId = user.Id,
                };

                await reportRepo.AddReport(newReport);

                await reportRepo.SaveChangesAsync();

                return(RedirectToAction("index"));
            }

            return(View(model));
        }
Ejemplo n.º 7
0
 private async Task FillOutMembersBaseReport(ReportCreateViewModel model)
 {
     model.AllMembers = await GetAllMembersAsSelectList();
 }
Ejemplo n.º 8
0
        public async Task CreateReport(ReportCreateViewModel model, string agentId)
        {
            if (string.IsNullOrEmpty(agentId))
            {
                throw new ArgumentException("Не е намерен брокерът, който пише 'Докладът' в системата!");
            }

            if (!(await _userManager.IsInRoleAsync(agentId, Enum.GetName(typeof(Role), Role.Agent)) ||
                  await _userManager.IsInRoleAsync(agentId, Enum.GetName(typeof(Role), Role.Administrator))))
            {
                throw new NotAuthorizedUserException("Потребителят няма право на това действие! Само админи и брокери имат право да правят Доклади !");
            }

            if (!await _webPlatformServices.Exist(model.WebPlatformViews.Select(w => w.PlatformId)))
            {
                throw new ArgumentException("Някоя от платформите, която сте избрали не съществува в системата!");
            }

            var propertyToCreateReportTo =
                await _dbContext.Properties.Include(p => p.Owner).FirstOrDefaultAsync(p => p.Id == model.PropertyId);

            if (propertyToCreateReportTo == null)
            {
                throw new ContentNotFoundException("Не е намерен имотът, за който пишете доклад!");
            }

            if (propertyToCreateReportTo.PropertyState != PropertyState.Available || !propertyToCreateReportTo.IsActive)
            {
                throw new ArgumentException("Имотът, на който пишете доклад не активен !");
            }

            if (propertyToCreateReportTo.AgentId != agentId &&
                !await _userManager.IsInRoleAsync(agentId, Enum.GetName(typeof(Role), Role.Administrator)))
            {
                throw new NotAuthorizedUserException("Нямате право да пишете доклад на имот, които не под ваше представителство !");
            }

            var brokersSharedWith =
                await _dbContext.Partners
                .Where(p => model.ColleguesIds.Any(ci => ci == p.Id))
                .ToListAsync();

            var promotianMediaeUsed = await _dbContext.PromotionMediae
                                      .Where(pm => model.PromotionMediaUsedIds.Any(pmu => pmu == pm.Id))
                                      .ToListAsync();

            var report = new Model.Reports.Reports
            {
                PathToReport            = await CreateReportRelativePath(agentId, model.PropertyId),
                TotalViews              = model.TotalViews,
                TotalCalls              = model.TotalCalls,
                TotalInspections        = model.TotalInspections,
                TotalOffers             = model.TotalOffers,
                ActionsConclusion       = model.ActionsConclusion,
                ChangeArguments         = model.ChangeArguments,
                IsMarketingChangeIssued = model.IsMarketingChangeIssued,
                IsPriceChangeIssued     = model.IsPriceChangeIssued,
                PropertyId              = model.PropertyId,
                PromotionMediae         = new HashSet <PromotionMedia>(promotianMediaeUsed),
                ColleaguesPartners      = new HashSet <Partners>(brokersSharedWith),
                WebPlatformViews        = new HashSet <WebPlatformViews>(model.WebPlatformViews
                                                                         .Select(p => new WebPlatformViews
                {
                    Views         = p.Views,
                    WebPlatformId = p.PlatformId
                })),
                CustomPromotionMediae = new HashSet <CustomPromotionMedia>(model.CustomPromotionMediae.Select(c => new CustomPromotionMedia {
                    CustomMedia = c
                })),
                CustomRecommendedActions = new HashSet <CustomRecommendedActions>(model.CustomRecommendedActions.Select(c => new CustomRecommendedActions {
                    RecommendedAction = c
                })),
                Offers = new HashSet <Offers>(model.Offers.Select(o => new Offers {
                    Offer = o
                })),
                AgentId = agentId
            };

            _dbContext.Reports.Add(report);
            await _dbContext.SaveChangesAsync();

            var htmlReport = await CreateReportAsHtmlFile(report.Id, propertyToCreateReportTo.Id, agentId);

            if (model.SendToOwnersViaEmail)
            {
                var ownerEmail = propertyToCreateReportTo.Owner.Email;
                // send mail to owner
                await _noReplayMail.SendHtmlEmailAsync(ownerEmail, "Доклад за имот от СПРОПЪРТИС", htmlReport);
            }
        }
Ejemplo n.º 9
0
        public virtual async Task <ActionResult> Create(ReportCreateViewModel viewModel)
        {
            await _reportService.CreateByViewModelAsync(viewModel);

            return(RedirectToAction(MVC.Report.List()));
        }