private bool IsOrderNeeded(Order order, int pharmacyId, CreateReportDTO dto) { return(order.PharmacyId == pharmacyId && order.CreationDate >= dto.DateFrom && order.CreationDate <= dto.DateTo && order.OrderStateId != OrderStateId.Canceled); }
public async Task <IActionResult> CreateReport([FromBody] CreateReportDTO dto) { try { _validator.ValidateCreateReportDTO(dto); var user = await GetCurrentUser(); if (user.PharmacyId == null) { return(ApiUnauthorized()); } var pharmacyId = user.PharmacyId ?? -1; var orders = Context.Orders.AsEnumerable().Where(o => IsOrderNeeded(o, pharmacyId, dto)).ToList(); var transactions = Context.Transactions.AsEnumerable().Where(t => IsTransactionNeeded(t, pharmacyId, dto)).ToList(); var cashTransactions = transactions.Where(t => t.PaymentTypeId == PaymentTypeId.Cash); var totalRevenue = CalculateRevenue(transactions); var revenueInCash = CalculateRevenue(cashTransactions); var totalOrderSum = CalculateTotalOrderSum(orders); await Context.Reports.AddAsync(new Report(dto, pharmacyId, user.Id, orders.Count, transactions.Count, totalRevenue, revenueInCash, totalOrderSum)); await Context.SaveChangesAsync(); return(Created()); } catch (DtoValidationException ex) { return(ApiBadRequest(ex.Message, ex.Parameter)); } }
public async Task <ActionResult> PostReport(CreateReportDTO createReportDTO) { var report = _mapper.Map <ReportDTO>(createReportDTO); _context.Add(report); await _context.SaveChangesAsync(); var reportDTO = _mapper.Map <ReportDTO>(report); return(CreatedAtAction("GetReport", new { id = reportDTO.Id }, reportDTO)); }
public IActionResult AddReport(int id) { CreateReportDTO createReportDTO = new CreateReportDTO(); var psychologist = _unitOfWork.Psychologists.Get(id); var authorizedUser = GetCurrentUserAsync().Result; createReportDTO.PsychologistId = id; createReportDTO.PsychologistName = $"{psychologist.FirstName} {psychologist.LastName}"; createReportDTO.AuthorizedUserId = authorizedUser.Id; createReportDTO.AuthorizedUserName = $"{authorizedUser.FirstName} {authorizedUser.LastName}"; createReportDTO.IsChecked = false; return(PartialView(createReportDTO)); }
public IActionResult AddReport(CreateReportDTO model) { string _status = String.Empty; string _description = String.Empty; Report report = new Report() { Message = model.Message, PsychologistId = model.PsychologistId, AuthorizedUserId = model.AuthorizedUserId, IsAnonymous = model.IsChecked }; _unitOfWork.Reports.Add(report); _unitOfWork.Complete(); _status = "success"; _description = "Report added."; //if (_status != "error") //{ // Appointment appointment = new Appointment // { // PsychologistId = model.PsychologistId, // AuthorizedUserId = model.AuthorizedUserId, // StartDataTime = model.StartDateTime, // EndDataTime = model.EndDateTime, // AdditionalInfo = model.Info // }; // _unitOfWork.Appointments.Add(appointment); // int result = _unitOfWork.Complete(); // _status = "success"; // _description = "Appointment created."; //} //if (User.IsInRole("Doctor")) { //return RedirectToAction("DashboardDoctor", "User", new { showAll = false }); } //else { //return RedirectToAction("DashboardPatient", "User", new { showAll = false }); } return(Json(new { status = _status, description = _description })); }
public void ValidateCreateReportDTO(CreateReportDTO dto) { ValidateNumberIsPositive(dto.ReportTypeId, "reportTypeId"); }
private bool IsTransactionNeeded(Transaction transaction, int pharmacyId, CreateReportDTO dto) { return(transaction.PharmacyId == pharmacyId && transaction.CreatedAt >= dto.DateFrom && transaction.CreatedAt <= dto.DateTo); }