Пример #1
0
 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);
 }
Пример #2
0
        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));
            }
        }
Пример #3
0
        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 }));
        }
Пример #6
0
 public void ValidateCreateReportDTO(CreateReportDTO dto)
 {
     ValidateNumberIsPositive(dto.ReportTypeId, "reportTypeId");
 }
Пример #7
0
 private bool IsTransactionNeeded(Transaction transaction, int pharmacyId, CreateReportDTO dto)
 {
     return(transaction.PharmacyId == pharmacyId &&
            transaction.CreatedAt >= dto.DateFrom &&
            transaction.CreatedAt <= dto.DateTo);
 }