public async Task <IActionResult> Handle(GetAdministrationDataQuery request, CancellationToken cancellationToken) { try { if (!(await PermissionMonitor.CheckPermissionsAsync(_userRepository, request.UserId, "Panel administracji"))) { return(new JsonResult(new ApiResponse <object> { Data = null, Code = 403, ErrorMessage = "Brak uprawnień" })); } var users = await _userRepository.GetCompanyTraders(request.CompanyId); var administrationData = new AdministrationDataDto { Users = new List <UserForAdministrationDto>(), Statistics = new CompanyStatisticsDto { Activities = new List <int>(), Opportunities = new List <int>(), ThisMonthGross = 0, ThisMonthMarkup = 0, ThisMonthNet = 0, ThisYearGross = 0, ThisYearMarkup = 0, ThisYearNet = 0 }, }; var company = await _companyRepository.GetByIdAsync(request.CompanyId); administrationData.Company = new CompanyDataDto { Address = new AddressDto { ApartmentNumber = company.Address.ApartmentNumber, City = company.Address.City, HouseNumber = company.Address.HouseNumber, Id = company.Address.Id, PostCode = company.Address.PostCode, Province = company.Address.Province, Street = company.Address.Street }, Id = company.Id, Name = company.CompanyName, Nip = company.NIP, Regon = company.Regon }; var oppos = await _opportunityRepository.GetAllOpportunitiesAsync(request.CompanyId, new List <string> { "", "", "" }, new DateTime(DateTime.Now.Year - 1, 1, 1), new DateTime(DateTime.Now.Year, 12, 31)); oppos.AddRange(await _opportunityRepository.GetAllOrdersAsync(request.CompanyId, new List <string> { "", "" }, new DateTime(DateTime.Now.Year - 1, 1, 1), new DateTime(DateTime.Now.Year, 12, 31))); foreach (var oppo in oppos) { administrationData.Statistics.ThisYearGross += oppo.SumGrossValue; administrationData.Statistics.ThisYearMarkup += oppo.SumMarkupValue; administrationData.Statistics.ThisYearNet += oppo.SumNetValue; if (oppo.CreateDate.Month == DateTime.Now.Month) { administrationData.Statistics.ThisMonthGross += oppo.SumGrossValue; administrationData.Statistics.ThisMonthMarkup += oppo.SumMarkupValue; administrationData.Statistics.ThisMonthNet += oppo.SumNetValue; } } var oppoStatuses = new List <string> { "Nowa", "Modyfikowana", "Anulowana", "Zaakceptowana", "Oferta" }; foreach (var oppoStat in oppoStatuses) { administrationData.Statistics.Opportunities.Add(oppos.Where(x => x.Status.Name == oppoStat).Count()); } foreach (var user in users) { administrationData.Users.Add(new UserForAdministrationDto { Id = user.Id, CanDelete = (user.Id != request.UserId), Department = user.CompanyPosition, Name = user.FirstName + " " + user.LastName, StartDate = user.WorkStartDate.ToString("dd.MM.yyyy"), Gender = user.Gender }); } var activities = await _activityTypeRepository.GetActivityTypesAsync(); var leads = await _leadRepository.GetAllLeadsAsync(request.CompanyId, new DateTime(DateTime.Now.Year, 1, 1), new DateTime(DateTime.Now.Year, 12, 31)); foreach (var activity in activities) { administrationData.Statistics.Activities.Add(0); } foreach (var lead in leads) { int counter = 0; foreach (var activity in activities) { administrationData.Statistics.Activities[counter] += lead.Activities.Where(x => x.ActivityType == activity).Count(); counter += 1; } } return(new JsonResult(new ApiResponse <AdministrationDataDto> { Code = 200, Data = administrationData, ErrorMessage = "" })); } catch { return(new JsonResult(new ApiResponse <object> { Code = 500, Data = null, ErrorMessage = "Nastąpił problem z serwerem, skontaktuj się z działem IT." })); } }
public async Task <IActionResult> Handle(GetAllLeadsQuery request, CancellationToken cancellationToken) { try { if (!(await PermissionMonitor.CheckPermissionsAsync(_userRepository, request.UserId, "Przeglądanie leadów"))) { return(new JsonResult(new ApiResponse <object> { Data = null, Code = 403, ErrorMessage = "Brak uprawnień" })); } var dbLeads = await _leadRepository.GetAllLeadsAsync(request.CompanyId, request.Filters.DateFrom, request.Filters.DateTo); var traders = await _userRepository.GetCompanyTraders(request.CompanyId); var response = new LeadListResponseDto() { CompanyTraders = new List <string>(), Leads = new List <LeadForListDto>() }; foreach (var trader in traders) { response.CompanyTraders.Add(trader.FirstName + " " + trader.LastName); } foreach (var lead in dbLeads) { response.Leads.Add(new LeadForListDto { Id = lead.Id, Email = lead.LeadContacts.Count > 0?lead.LeadContacts.First().Email:"", User = lead.User.FirstName + " " + lead.User.LastName, MainContact = lead.LeadContacts.Count > 0 ? lead.LeadContacts.First().Name:"", Name = lead.Name, CreateDate = lead.CreateDate, Status = lead.LeadStatus.Name }); } if (request.Filters.Name != "") { response.Leads = response.Leads.Where(x => x.Name.Contains(request.Filters.Name)).ToList(); } if (request.Filters.Status != "") { response.Leads = response.Leads.Where(x => x.Status == request.Filters.Status).ToList(); } if (request.Filters.User != "") { response.Leads = response.Leads.Where(x => x.User.Contains(request.Filters.User)).ToList(); } if (request.Filters.Email != "") { response.Leads = response.Leads.Where(x => x.Email.Contains(request.Filters.Email)).ToList(); } return(new JsonResult(new ApiResponse <LeadListResponseDto> { Data = response, Code = 200, ErrorMessage = "" })); } catch { return(new JsonResult(new ApiResponse <object> { Data = null, Code = 500, ErrorMessage = "Nastąpił problem z serwerem, skontaktuj się z działem IT." })); } }
public async Task GetLeads_Return_All_Leads() { var leads = await _repository.GetAllLeadsAsync(); Assert.AreEqual(5, leads.Count); }
public async Task <IActionResult> Handle(GetOpportunityQuery request, CancellationToken cancellationToken) { try { var tradersList = await _userRepository.GetCompanyTraders(request.CompanyId); var products = await _productRepository.GetAllProductsAsync(request.CompanyId, new List <string> { "", "", "" }); var leads = await _leadRepository.GetAllLeadsAsync(request.CompanyId, new DateTime(2000, 01, 01), new DateTime(2999, 12, 31)); var opportunity = await _opportunityRepository.GetOpportunityAsync(request.OpportunityId, request.CompanyId); if (opportunity != null && opportunity.TraderId != request.UserId) { if (!(await PermissionMonitor.CheckPermissionsAsync(_userRepository, request.UserId, "Modyfikacja cudzych szans sprzedaży"))) { return(new JsonResult(new ApiResponse <object> { Data = null, Code = 403, ErrorMessage = "Brak uprawnień" })); } } var oppoRes = new SellOpportunityDetailsDto(); if (request.OpportunityId > 0) { oppoRes = new SellOpportunityDetailsDto { Id = opportunity.Id, Lead = opportunity.Lead.Name + "," + opportunity.Lead.NIP, Positions = new List <SellOpportunityPositionDetailsDto>(), Status = opportunity.Status.Name, Trader = opportunity.Trader.FirstName + " " + opportunity.Trader.LastName }; var counter = 1; foreach (var position in opportunity.Positions) { oppoRes.Positions.Add(new SellOpportunityPositionDetailsDto { Deleted = false, GrossValue = position.GrossValue, Id = position.Id, LocalId = counter, Markup = position.Markup, NetValue = position.NetValue, Product = position.Product.Name, Quantity = position.Quantity, VatValue = position.VatValue, UnitOfMeasurement = position.Product.UnitOfMeasurement }); counter += 1; } } else { oppoRes = new SellOpportunityDetailsDto { Lead = "", Positions = new List <SellOpportunityPositionDetailsDto>(), Status = "", Trader = "" }; } var response = new SellOpportunityDetailsResponseDto { CompanyTraders = tradersList.Select(x => (x.FirstName + " " + x.LastName)).ToList(), Leads = leads.Select(x => (x.Name + "," + x.NIP)).ToList(), Products = products.Select(x => new ProductForListDto { Id = x.Id, Name = x.Name, MarkupRate = x.MarkupRate, UnitOfMeasurement = x.UnitOfMeasurement, UnitValue = x.UnitValue, VatRate = x.VatRate }).ToList(), SellOpportunity = oppoRes }; return(new JsonResult(new ApiResponse <SellOpportunityDetailsResponseDto> { Data = response, Code = 200, ErrorMessage = "" })); } catch { return(new JsonResult(new ApiResponse <object> { Data = null, Code = 500, ErrorMessage = "Nastąpił problem z serwerem, skontaktuj się z działem IT." })); } }