public OrderDTO Order(int id)
 {
     OrderDTO item = new OrderConverter().Convert( facade.GetOrderRepo().Get(id));
     if (item == null)
     {
         throw new HttpResponseException(HttpStatusCode.NotFound);
     }
     return item;
 }
 /// <summary>
 /// Will get a specific Order from database.
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>    
 public HttpResponseMessage Get(int id)
 {
     var order = new Facade().GetOrderRepository().Get(id);
     OrderDto orderDto = null;
     if (order != null)
     {
         orderDto = new OrderConverter().Convert(order);
         return Request.CreateResponse<OrderDto>(HttpStatusCode.OK, orderDto);
     }
     var response = new HttpResponseMessage(HttpStatusCode.NotFound)
     {
         Content = new StringContent("Order not found.")
     };
     throw new HttpResponseException(response);
 }
        // Todo: consider changing maxSequenceNo to member variable for this class instead of out param?
        public Bet[] ListBootstrapOrders(out long maxSequenceNo)
        {
            ListBootstrapOrdersRequest  request = new ListBootstrapOrdersRequest();
            ListBootstrapOrdersResponse response;
            long lastSeqNoReceived = -1;

            Bet[] betsToReturn = null;


            // Keep calling until:
            //  receive an order with a squence number equal to the MaximumSequenceNumber,
            //  or stop receiving any orders (this one is unfortunate since it requires an extra wasted call),
            //  may be worth looking into whether reliable enough to assume reached limit when number
            //  returned is less than the max that can be returned with each call (usually 500).
            do
            {
                request.SequenceNumber = lastSeqNoReceived;
                response = _proxy.ListBootstrapOrders(request);
                if (response.ReturnStatus.Code != 0)
                {
                    throw new Exception(response.ReturnStatus.Description);
                }


                // This is an important check for breaking out of the loop
                //  in situations where the orders never reach the MaximumSequenceNumber.
                if (response.Orders == null || response.Orders.Length == 0)
                {
                    break;
                }


                Bet[] bets = OrderConverter.ConvertOrderCollection(response.Orders);
                betsToReturn = OrderConverter.CombineTwoBetArrays(betsToReturn, bets);


                lastSeqNoReceived = response.Orders[response.Orders.Length - 1].SequenceNumber;
            }while (lastSeqNoReceived < response.MaximumSequenceNumber);


            maxSequenceNo = response.MaximumSequenceNumber;
            return(betsToReturn);
        }
Beispiel #4
0
 public OrderModel(ILogger <OrderModel> logger,
                   IOrderRepository orderRepository,
                   IRouteListRepository routeListRepository,
                   OrderConverter orderConverter,
                   IDriverApiParametersProvider webApiParametersProvider,
                   IComplaintsRepository complaintsRepository,
                   ISmsPaymentModel aPISmsPaymentModel,
                   ISmsPaymentServiceAPIHelper smsPaymentServiceAPIHelper,
                   IUnitOfWork unitOfWork
                   )
 {
     _logger                     = logger ?? throw new ArgumentNullException(nameof(logger));
     _orderRepository            = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository));
     _routeListRepository        = routeListRepository ?? throw new ArgumentNullException(nameof(routeListRepository));
     _orderConverter             = orderConverter ?? throw new ArgumentNullException(nameof(orderConverter));
     _webApiParametersProvider   = webApiParametersProvider ?? throw new ArgumentNullException(nameof(webApiParametersProvider));
     _complaintsRepository       = complaintsRepository ?? throw new ArgumentNullException(nameof(complaintsRepository));
     _aPISmsPaymentModel         = aPISmsPaymentModel ?? throw new ArgumentNullException(nameof(aPISmsPaymentModel));
     _smsPaymentServiceAPIHelper = smsPaymentServiceAPIHelper ?? throw new ArgumentNullException(nameof(smsPaymentServiceAPIHelper));
     _unitOfWork                 = unitOfWork ?? throw new ArgumentNullException(nameof(unitOfWork));
 }
        /// <summary>
        /// Creates a Order in database.
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        public HttpResponseMessage Post(OrderDto orderDto)
        {
            try
            {
                var order = new OrderConverter().Convert(orderDto);
                facade.GetOrderRepository().Add(order);

                var response = Request.CreateResponse<OrderDto>(HttpStatusCode.Created, orderDto);
                var uri = Url.Link("GetOrderById", new { order.Id });
                response.Headers.Location = new Uri(uri);
                return response;
            }
            catch (Exception)
            {
                var response = new HttpResponseMessage(HttpStatusCode.Conflict)
                {
                    Content = new StringContent("Could not add a Order to the database")
                };
                throw new HttpResponseException(response);
            }
        }
        public void ConvertExample()
        {
            var converter = new OrderConverter();
            var order     = new Order
            {
                OrderDate = DateTime.Now,
                LineItems = new[] {
                    new OrderLineItem {
                        Amount = 20.2M, Description = "Item 1"
                    },
                    new OrderLineItem {
                        Amount = 14.43M, Description = "Item 2"
                    }
                }
            };


            var dto = converter.Convert(order);

            Assert.AreEqual(dto.OrderDate, order.OrderDate);
            Assert.AreEqual(dto.Total, 34.63M);
        }
 public async Task <CustomerDto> GetByCodeAsync(string code)
 {
     try
     {
         return(await _context.Customers.AsNoTracking().Select(x => new CustomerDto
         {
             Address = x.Address,
             Code = x.Code,
             Discount = x.Discount,
             Id = x.Id,
             Name = x.Name,
             UserId = x.UserId,
             UserName = x.UserName,
             StoreUserName = x.User.Surname + " " + x.User.Name,
             Orders = OrderConverter.Convert(x.Orders),
             User = UserConverter.Convert(x.User)
         }).FirstOrDefaultAsync(y => y.Code == code));
     }
     catch (Exception)
     {
         return(null);
     }
 }
 public async Task <List <CustomerDto> > GetByUserIdAsync(Guid id)
 {
     try
     {
         return(await _context.Customers.AsNoTracking().Select(x => new CustomerDto
         {
             Address = x.Address,
             Code = x.Code,
             Discount = x.Discount,
             Id = x.Id,
             Name = x.Name,
             UserId = x.UserId,
             UserName = x.UserName,
             StoreUserName = x.User.Surname + x.User.Name,
             Orders = OrderConverter.Convert(x.Orders),
             User = UserConverter.Convert(x.User)
         }).Where(y => y.UserId == id).ToListAsync());
     }
     catch (Exception)
     {
         return(null);
     }
 }
Beispiel #9
0
        public OrderViewModel GetOrderByOrderId(int id)
        {
            var orderViewModel = OrderConverter.Convert(_orderRepository.GetByOrderId(id));

            return(orderViewModel);
        }
Beispiel #10
0
 public List <OrderViewModel> GetAllOrders(int skip = 0, int take = 0)
 {
     return(OrderConverter.ConvertList(_orderRepository.GetAll(skip, take)));
 }
 public OrderBusiness(IRepository <Order> repository)
 {
     _repository = repository;
     _converter  = new OrderConverter();
 }
Beispiel #12
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            if (!(value is NewOrderRequest request))
            {
                throw new BitfinexBadInputException("Can't serialize new order request");
            }


            writer.WriteStartArray();
            writer.WriteValue(0);
            writer.WriteValue("on");
            writer.WriteValue((object)null);

            writer.WriteStartObject();

            if (request.Gid.HasValue)
            {
                writer.WritePropertyName("gid");
                writer.WriteValue(request.Gid.Value);
            }

            writer.WritePropertyName("cid");
            writer.WriteValue(request.Cid);

            writer.WritePropertyName("type");
            writer.WriteValue(OrderConverter.SerializeType(request.Type));

            writer.WritePropertyName("symbol");
            writer.WriteValue(request.Symbol);

            writer.WritePropertyName("amount");
            writer.WriteValue(request.Amount.ToString(CultureInfo.InvariantCulture));

            if (request.Price.HasValue)
            {
                writer.WritePropertyName("price");
                writer.WriteValue(request.Price.Value.ToString(CultureInfo.InvariantCulture));
            }

            if (request.PriceTrailing.HasValue)
            {
                writer.WritePropertyName("price_trailing");
                writer.WriteValue(request.PriceTrailing.Value.ToString(CultureInfo.InvariantCulture));
            }

            if (request.PriceAuxLimit.HasValue)
            {
                writer.WritePropertyName("price_aux_limit");
                writer.WriteValue(request.PriceAuxLimit.Value.ToString(CultureInfo.InvariantCulture));
            }

            if (request.PriceOcoStop.HasValue)
            {
                writer.WritePropertyName("price_oco_stop");
                writer.WriteValue(request.PriceOcoStop.Value.ToString(CultureInfo.InvariantCulture));
            }

            if (request.Flags.HasValue)
            {
                writer.WritePropertyName("flags");
                writer.WriteValue((int)request.Flags);
            }

            if (request.TimeInForce.HasValue)
            {
                writer.WritePropertyName("tif");
                writer.WriteValue(request.TimeInForce.Value.ToString("u"));
            }

            InitMeta(request);
            if (request.Meta != null && request.Meta.Any())
            {
                writer.WritePropertyName("meta");
                WriteMeta(request.Meta, writer);
            }

            writer.WriteEndObject();
            writer.WriteEndArray();
        }
Beispiel #13
0
        public async Task <List <OrderVM> > GetAllOrders()
        {
            var dbOrders = await orderRepository.GetAllOrders().ToListAsync();

            return(dbOrders.Select(o => OrderConverter.ConvertToVM(o)).ToList());
        }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            if (!(value is NewOrderRequest order))
            {
                throw new BitfinexBadInputException("Can't serialize order");
            }


            writer.WriteStartArray();
            writer.WriteValue(0);
            writer.WriteValue("on");
            writer.WriteValue((object)null);

            writer.WriteStartObject();

            if (order.Gid.HasValue)
            {
                writer.WritePropertyName("gid");
                writer.WriteValue(order.Gid.Value);
            }

            writer.WritePropertyName("cid");
            writer.WriteValue(order.Cid);

            writer.WritePropertyName("type");
            writer.WriteValue(OrderConverter.SerializeType(order.Type));

            writer.WritePropertyName("symbol");
            writer.WriteValue(order.Symbol);

            writer.WritePropertyName("amount");
            writer.WriteValue(order.Amount.ToString(CultureInfo.InvariantCulture));

            if (order.Price.HasValue)
            {
                writer.WritePropertyName("price");
                writer.WriteValue(order.Price.Value.ToString(CultureInfo.InvariantCulture));
            }

            if (order.PriceTrailing.HasValue)
            {
                writer.WritePropertyName("price_trailing");
                writer.WriteValue(order.PriceTrailing.Value.ToString(CultureInfo.InvariantCulture));
            }

            if (order.PriceAuxLimit.HasValue)
            {
                writer.WritePropertyName("price_aux_limit");
                writer.WriteValue(order.PriceAuxLimit.Value.ToString(CultureInfo.InvariantCulture));
            }

            writer.WritePropertyName("hidden");
            writer.WriteValue(order.Hidden);

            if (order.Flags.HasValue)
            {
                writer.WritePropertyName("flags");
                writer.WriteValue(order.Flags.Value.ToString(CultureInfo.InvariantCulture));
            }


            writer.WriteEndObject();
            writer.WriteEndArray();
        }
 /// <summary>
 /// Updates a Order from database.
 /// </summary>
 /// <param name="order"></param>
 /// <returns></returns>
 public HttpResponseMessage Put(OrderDto orderDto)
 {
     try
     {
         Order order = new OrderConverter().Convert(orderDto);
         facade.GetOrderRepository().Edit(order);
         var response = Request.CreateResponse<OrderDto>(HttpStatusCode.OK, orderDto);
         var uri = Url.Link("GetOrderById", new { order.Id });
         response.Headers.Location = new Uri(uri);
         return response;
     }
     catch (Exception)
     {
         var response = new HttpResponseMessage(HttpStatusCode.Conflict)
         {
             Content = new StringContent("No matching order")
         };
         throw new HttpResponseException(response);
     }
 }
Beispiel #16
0
        // public PatientDTO a;
        // public DoctorDTO b;
        // public SecretaryDTO c;

        public App()
        {
            // HCI

            medicalRoles = new List <string> {
                "Svi", "Opšte Prakse", "Hirurg", "Dermatolog", "Očni lekar", "Stomatolog"
            };
            roomTypes = new List <string> {
                "Bolnička Soba", "Operaciona Sala", "Soba za preglede"
            };
            medicalAppointmentTypes = new List <string> {
                "Pregled", "Operacija", "Ležanje"
            };
            AddressDTO address = new AddressDTO("1", "Bulevar despota Stefan 7A", "Novi Sad", "Srbija", "21000");

            director     = new DirectorDTO(address, "Dusan", "Urosevic", "1231231231231", "021021", "Male", new DateTime(1990, 5, 5), 123, new TimeInterval(new DateTime(2020, 12, 12), new DateTime(2020, 12, 12)), new TimeInterval(new DateTime(2020, 12, 12), new DateTime(2020, 12, 12)), "[email protected]", "pass", "Klinicki Centar Vojvodina");
            SelectedDate = DateTime.Now;


            // Converters
            var addressConverter           = new AddressConverter();
            var patientConverter           = new PatientConverter(addressConverter);
            var medicineConverter          = new MedicineConverter();
            var questionConverter          = new QuestionConverter(patientConverter);
            var prescriptionConverter      = new PrescriptionConverter(patientConverter, medicineConverter);
            var medicalConsumableConverter = new MedicalConsumableConverter();
            var roomConverter                = new RoomConverter();
            var equipmentConverter           = new EquipmentConverter(roomConverter);
            var guestConverter               = new GuestConverter(addressConverter);
            var hospitalConverter            = new HospitalConverter();
            var doctorConverter              = new DoctorConverter(addressConverter);
            var medicalAppointmentConverter  = new MedicalAppointmentConverter(roomConverter, guestConverter, doctorConverter);
            var renovationConverter          = new RenovationConverter(roomConverter);
            var feedbackConverter            = new FeedbackConverter();
            var reviewConverter              = new ReviewConverter(doctorConverter);
            var anamnesisConvertor           = new AnamnesisConvertor();
            var secretaryConverter           = new SecretaryConverter(questionConverter, addressConverter);
            var inventoryManagementConverter = new InventoryManagementConverter(equipmentConverter, roomConverter);
            var orderConverter               = new OrderConverter(medicalConsumableConverter, medicineConverter, equipmentConverter);
            var reportConverter              = new ReportConverter();
            var approvalConverter            = new ApprovalConverter(doctorConverter);
            var propositionConverter         = new PropositionConverter(medicineConverter, approvalConverter, doctorConverter);


            var referralConverter = new ReferralConverter(medicalAppointmentConverter);


            // Repositories
            // Many to Many
            var medicalAppointmentToDoctorRepository = new MedicalAppointmentToDoctorRepository(
                new CSVStream <MedicalAppointmentToDoctor>(
                    MEDICAL_APPOINTMENT_TO_DOCTOR_FILEPATH,
                    new MedicalAppointmentToDoctorCSVConverter(DELIMITER)),
                new LongSequencer()
                );
            var inventoryManagementToEquipmentRepository = new InventoryManagementToEquipmentRepository(
                new CSVStream <InventoryManagementToEquipment>(
                    INVENTORY_EQUIPMENT_FILEPATH,
                    new InventoryManagementToEquipmentCSVConverter(DELIMITER)),
                new LongSequencer()
                );

            var addressRepository = new AddressRepository(new CSVStream <Address>(ADDRESS_FILEPATH, new AddressCSVConverter(DELIMITER)), new LongSequencer());
            var patientRepository = new PatientRepository(
                new CSVStream <Patient>(PATIENT_FILEPATH, new PatientCSVConverter(DELIMITER, DATETIME_FORMAT)),
                new CSVStream <Patient>(PATIENT_FILEPATH, new PatientCSVConverter(DELIMITER, DATETIME_FORMAT)),
                new CSVStream <Doctor>(DOCTOR_FILEPATH, new DoctorCSVConverter(DELIMITER, DATETIME_FORMAT, TIME_FORMAT)),
                new CSVStream <Secretary>(SECRETARY_FILEPATH, new SecretaryCSVConverter(DELIMITER, DATETIME_FORMAT, TIME_FORMAT)),
                addressRepository, new LongSequencer());
            var doctorRepository = new DoctorRepository(
                new CSVStream <Doctor>(DOCTOR_FILEPATH, new DoctorCSVConverter(DELIMITER, DATETIME_FORMAT, TIME_FORMAT)),
                new CSVStream <Patient>(PATIENT_FILEPATH, new PatientCSVConverter(DELIMITER, DATETIME_FORMAT)),
                new CSVStream <Doctor>(DOCTOR_FILEPATH, new DoctorCSVConverter(DELIMITER, DATETIME_FORMAT, TIME_FORMAT)),
                new CSVStream <Secretary>(SECRETARY_FILEPATH, new SecretaryCSVConverter(DELIMITER, DATETIME_FORMAT, TIME_FORMAT)),
                addressRepository,
                new LongSequencer());
            var secretaryRepository = new SecretaryRepository(
                new CSVStream <Secretary>(SECRETARY_FILEPATH, new SecretaryCSVConverter(DELIMITER, DATETIME_FORMAT, TIME_FORMAT)),
                new CSVStream <Patient>(PATIENT_FILEPATH, new PatientCSVConverter(DELIMITER, DATETIME_FORMAT)),
                new CSVStream <Doctor>(DOCTOR_FILEPATH, new DoctorCSVConverter(DELIMITER, DATETIME_FORMAT, TIME_FORMAT)),
                new CSVStream <Secretary>(SECRETARY_FILEPATH, new SecretaryCSVConverter(DELIMITER, DATETIME_FORMAT, TIME_FORMAT)),
                addressRepository,
                new LongSequencer());


            var inventoryManagementRepository = new InventoryManagementRepository(new CSVStream <InventoryManagement>(INVENTORY_FILEPATH, new InventoryManagementCSVConverter(DELIMITER, DATETIME_FORMAT)), inventoryManagementToEquipmentRepository, new LongSequencer());
            var orderDetailsRepository        = new OrderDetailsRepository(new CSVStream <OrderDetails>(ORDER_DETAILS_FILEPATH, new OrderDetailsCSVConverter(DELIMITER)), new LongSequencer());
            var questionRepository            = new QuestionRepository(new CSVStream <Question>(QUESTION_FILEPATH, new QuestionCSVConverter(DELIMITER, DATETIME_FORMAT)), new LongSequencer());


            var medicalConsumableRepository = new MedicalConsumableRepository(
                new CSVStream <MedicalConsumables>(MEDICAL_CONSUMABLE_FILEPATH, new MedicalConsumableCSVConverter(DELIMITER)),
                new CSVStream <Equipment>(EQUIPMENT_FILEPATH, new EquipmentCSVConverter(DELIMITER)),
                new CSVStream <MedicalConsumables>(MEDICAL_CONSUMABLE_FILEPATH, new MedicalConsumableCSVConverter(DELIMITER)),
                new CSVStream <Medicine>(MEDICINE_FILEPATH, new MedicineCSVConverter(DELIMITER)),
                new LongSequencer());

            var equipmentRepository = new EquipmentRepository(
                new CSVStream <Equipment>(EQUIPMENT_FILEPATH, new EquipmentCSVConverter(DELIMITER)),
                new CSVStream <Equipment>(EQUIPMENT_FILEPATH, new EquipmentCSVConverter(DELIMITER)),
                new CSVStream <MedicalConsumables>(MEDICAL_CONSUMABLE_FILEPATH, new MedicalConsumableCSVConverter(DELIMITER)),
                new CSVStream <Medicine>(MEDICINE_FILEPATH, new MedicineCSVConverter(DELIMITER)),
                new LongSequencer());
            var medicineRepository = new MedicineRepository(
                new CSVStream <Medicine>(MEDICINE_FILEPATH, new MedicineCSVConverter(DELIMITER)),
                new CSVStream <Equipment>(EQUIPMENT_FILEPATH, new EquipmentCSVConverter(DELIMITER)),
                new CSVStream <MedicalConsumables>(MEDICAL_CONSUMABLE_FILEPATH, new MedicalConsumableCSVConverter(DELIMITER)),
                new CSVStream <Medicine>(MEDICINE_FILEPATH, new MedicineCSVConverter(DELIMITER)),
                new LongSequencer());

            var prescriptionRepository = new PrescriptionRepository(new CSVStream <Prescription>(PRESCRIPTION_FILEPATH, new PrescriptionCSVConverter(DELIMITER, DATETIME_FORMAT)), medicineRepository, patientRepository, new LongSequencer());


            var medicalAppointmentRepository = new MedicalAppointmentRepository(
                new CSVStream <MedicalAppointment>(MEDICAL_APPOINTMENT_FILEPATH,
                                                   new MedicalAppointmentCSVConverter(DELIMITER, DATETIME_DETAIL_FORMAT)),
                medicalAppointmentToDoctorRepository,
                patientRepository,
                doctorRepository,
                new LongSequencer());
            var roomRepository = new RoomRepository(new CSVStream <Room>(ROOM_FILEPATH, new RoomCSVConverter(DELIMITER)), new LongSequencer(), equipmentRepository);

            var orderRepository = new OrderRepository(new CSVStream <Order>(ORDER_FILEPATH, new OrderCSVConverter(DELIMITER, DATETIME_FORMAT)), medicineRepository, equipmentRepository, medicalConsumableRepository, orderDetailsRepository, new LongSequencer());

            var renovationRepository  = new RenovationRepository(new CSVStream <Renovation>(RENOVATION_FILEPATH, new RenovationCSVConverter(DELIMITER, DATETIME_FORMAT)), new LongSequencer());
            var feedbackRepository    = new FeedbackRepository(new CSVStream <Feedback>(FEEDBACK_FILEPATH, new FeedbackCSVConverter(DELIMITER)), new LongSequencer());
            var reviewRepository      = new ReviewRepository(new CSVStream <Review>(REVIEW_FILEPATH, new ReviewCSVConverter(DELIMITER)), new LongSequencer());
            var anamnesisRepository   = new AnamnesisRepository(new CSVStream <Anamnesis>(ANAMNESIS_FILEPATH, new AnamnesisCSVConverter(DELIMITER)), new LongSequencer());
            var propositionRepository = new PropositionRepository(new CSVStream <Proposition>(PROPOSITION_FILEPATH, new PropositionCSVConverter(DELIMITER, DATETIME_FORMAT)), new LongSequencer(), medicineRepository);

            // Referral
            var admitionReferralRepository = new AdmitionReferralRepository(
                new CSVStream <Referral>(ADMITION_REFERRAL_FILEPATH, new ReferralCSVConventer(DELIMITER, DATETIME_FORMAT)),
                new LongSequencer()
                );
            var operationReferralRepository = new OperationReferralRepository(
                new CSVStream <Referral>(OPERATION_REFERRAL_FILEPATH, new ReferralCSVConventer(DELIMITER, DATETIME_FORMAT)),
                new LongSequencer());

            var examReferralRepository = new ExamReferralRepository(
                new CSVStream <Referral>(EXAM_REFERRAL_FILEPATH, new ReferralCSVConventer(DELIMITER, DATETIME_FORMAT)),
                new LongSequencer());

            var approvalRepository = new ApprovalRepository(new CSVStream <Approval>(APPROVAL_FILEPATH, new ApprovalCSVConverter(DELIMITER)), new LongSequencer());

            // Services

            var patientService            = new PatientService(patientRepository);
            var questionService           = new QuestionService(questionRepository);
            var addressService            = new AddressService(addressRepository);
            var medicineService           = new MedicineService(medicineRepository);
            var medicalConsumableService  = new MedicalConsumableService(medicalConsumableRepository);
            var prescriptionService       = new PrescriptionService(prescriptionRepository, medicineService, patientService);
            var reportService             = new ReportService();
            var guestService              = new GuestService(patientRepository);
            var equipmentService          = new EquipmentService(equipmentRepository);
            var doctorService             = new DoctorService(doctorRepository);
            var medicalAppointmentService = new MedicalAppointmentService(medicalAppointmentRepository, doctorService);
            var roomService                = new RoomService(roomRepository);
            var renovationService          = new RenovationService(renovationRepository, roomRepository);
            var feedbackService            = new FeedbackService(feedbackRepository);
            var reviewService              = new ReviewService(reviewRepository);
            var employeeService            = new EmployeeService(secretaryRepository, doctorRepository);
            var authenticationService      = new AuthenticationService(employeeService, patientService);
            var secretaryService           = new SecretaryService(secretaryRepository);
            var inventoryManagementService = new InventoryManagementService(inventoryManagementRepository);
            var orderService               = new OrderService(orderRepository);
            var anamnesisService           = new AnamnesisService(anamnesisRepository);
            var propositionService         = new PropositionService(propositionRepository);
            var approvalService            = new ApprovalService(approvalRepository);

            // Controllers
            PatientController           = new PatientController(patientService, patientConverter, guestConverter);
            GuestController             = new GuestController(guestService, guestConverter);
            AddressController           = new AddressController(addressService, addressConverter);
            MedicineController          = new MedicineController(medicineService, medicineConverter);
            QuestionController          = new QuestionController(questionService, questionConverter, patientConverter);
            MedicalConsumableController = new MedicalConsumableController(medicalConsumableService, medicalConsumableConverter);
            AuthenticationController    = new AuthenticationController();
            ReportController            = new ReportController(reportConverter);
            PrescriptionController      = new PrescriptionController(prescriptionService, prescriptionConverter);
            EquipmentController         = new EquipmentController(equipmentService, equipmentConverter);

            MedicalAppointmentController = new MedicalAppointmentController(
                medicalAppointmentService,
                medicalAppointmentConverter,
                doctorConverter,
                roomConverter
                );

            RoomController                = new RoomController(roomService, roomConverter);
            RenovationController          = new RenovationController(renovationService, renovationConverter);
            FeedbackController            = new FeedbackController(feedbackService, feedbackConverter);
            ReviewController              = new ReviewController(reviewService, reviewConverter);
            SecretaryController           = new SecretaryController(secretaryService, secretaryConverter);
            InventoryManagementController = new InventoryManagementController(inventoryManagementService, inventoryManagementConverter);
            OrderController               = new OrderController(orderService, orderConverter);
            DoctorController              = new DoctorController(doctorService, doctorConverter);
            AnamnesisController           = new AnamnesisController(anamnesisService, anamnesisConvertor);
            PropositionController         = new PropositionController(propositionService, propositionConverter);

            // Generators
            SecretaryAppointmentReportGenerator = new SecretaryAppointmentReportGenerator(REPORT_APPOINTMENT_FILEPATH);
            PatientAppointmentReportGenerator   = new PatientAppointmentReportGenerator(REPORT_APPOINTMENT_FILEPATH);
            PrescriptionReportGenerator         = new PrescriptionReportGenerator(REPORT_PRESCRIPTION_FILEPATH);
            DoctorsAppointmentReport            = new DirectorReportGenerator(REPORT_DOCTOR_APPOINTMENTS_FILEPATH, doctorRepository, medicalAppointmentRepository);
            MedicineReportGenerator             = new MedicineReportGenerator(REPORT_MEDICINE_FILEPATH, medicineRepository);


            Synchronise(RenovationController);
        }