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); }
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")); }
/// <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()); }
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); }
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; }
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)); }
private async Task FillOutMembersBaseReport(ReportCreateViewModel model) { model.AllMembers = await GetAllMembersAsSelectList(); }
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); } }
public virtual async Task <ActionResult> Create(ReportCreateViewModel viewModel) { await _reportService.CreateByViewModelAsync(viewModel); return(RedirectToAction(MVC.Report.List())); }