Coverage Summary for Class: SalesUseCases (com.imecatro.demosales.di)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| SalesUseCases |
0%
(0/1)
|
0%
(0/16)
|
|
0%
(0/16)
|
0%
(0/75)
|
package com.imecatro.demosales.di
import com.imecatro.demosales.domain.core.architecture.coroutine.CoroutineProvider
import com.imecatro.demosales.domain.sales.list.repository.AllSalesRepository
import com.imecatro.demosales.domain.core.files.FileInteractor
import com.imecatro.demosales.domain.sales.list.usecases.ExportSalesReportUseCase
import com.imecatro.demosales.domain.sales.add.repository.AddSaleRepository
import com.imecatro.demosales.domain.sales.add.usecases.AddNewSaleToDatabaseUseCase
import com.imecatro.demosales.domain.sales.add.usecases.AddProductToCartUseCase
import com.imecatro.demosales.domain.sales.add.usecases.CheckoutSaleUseCase
import com.imecatro.demosales.domain.sales.add.usecases.DeleteProductOnCartUseCase
import com.imecatro.demosales.domain.sales.add.usecases.DeleteTicketByIdUseCase
import com.imecatro.demosales.domain.sales.add.usecases.GetCartFlowUseCase
import com.imecatro.demosales.domain.sales.add.usecases.GetMostPopularProductsUseCase
import com.imecatro.demosales.domain.sales.add.usecases.UpdateProductOnCartUseCase
import com.imecatro.demosales.domain.sales.add.usecases.UpdateSaleClientUseCase
import com.imecatro.demosales.domain.sales.add.usecases.UpdateTicketStatusUseCase
import com.imecatro.demosales.domain.sales.details.DetailsSaleRepository
import com.imecatro.demosales.domain.sales.details.GetDetailsOfSaleByIdUseCase
import com.imecatro.demosales.domain.sales.details.UpdateSaleStatusUseCase
import com.imecatro.demosales.domain.sales.list.usecases.ExportProductsFromSaleUseCase
import com.imecatro.demosales.domain.sales.list.usecases.GetAllSalesUseCase
import com.imecatro.demosales.domain.sales.list.usecases.GetSalesMetricsUseCase
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ViewModelComponent
/**
* Hilt module for providing Use Case dependencies related to Sales.
*
* This module provides various use cases for listing sales, adding new sales,
* managing the shopping cart, and exporting sales data.
*/
@Module
@InstallIn(ViewModelComponent::class)
object SalesUseCases {
/**
* Provides [ExportSalesReportUseCase].
*/
@Provides
fun providesExportSalesReportUseCase(
allSalesRepository: AllSalesRepository,
fileInteractor: FileInteractor,
coroutineDispatcher: CoroutineProvider
): ExportSalesReportUseCase =
ExportSalesReportUseCase(allSalesRepository, fileInteractor, coroutineDispatcher)
/**
* Provides [ExportProductsFromSaleUseCase].
*/
@Provides
fun providesExportProductsFromSaleUseCase(
detailsSaleRepository: DetailsSaleRepository,
fileInteractor: FileInteractor,
coroutineDispatcher: CoroutineProvider
): ExportProductsFromSaleUseCase =
ExportProductsFromSaleUseCase(detailsSaleRepository, fileInteractor, coroutineDispatcher)
/**
* Provides [GetMostPopularProductsUseCase].
*/
@Provides
fun providesGetMostPopularProductsUseCase(addSaleRepository: AddSaleRepository): GetMostPopularProductsUseCase {
return GetMostPopularProductsUseCase(addSaleRepository)
}
/**
* Provides [AddNewSaleToDatabaseUseCase].
*/
@Provides
fun providesAddNewSaleToDatabaseUseCase(addSaleRepository: AddSaleRepository): AddNewSaleToDatabaseUseCase {
return AddNewSaleToDatabaseUseCase(addSaleRepository)
}
/**
* Provides [UpdateTicketStatusUseCase].
*/
@Provides
fun providesUpdateTicketStatusUseCase(addSaleRepository: AddSaleRepository): UpdateTicketStatusUseCase {
return UpdateTicketStatusUseCase(addSaleRepository)
}
/**
* Provides [AddProductToCartUseCase].
*/
@Provides
fun provideAddProductToCartUseCase(addSaleRepository: AddSaleRepository): AddProductToCartUseCase =
AddProductToCartUseCase(addSaleRepository)
/**
* Provides [UpdateProductOnCartUseCase].
*/
@Provides
fun provideUpdateProductToCartUseCase(addSaleRepository: AddSaleRepository): UpdateProductOnCartUseCase =
UpdateProductOnCartUseCase(addSaleRepository)
/**
* Provides [UpdateSaleClientUseCase].
*/
@Provides
fun provideUpdateSaleClientUseCase(addSaleRepository: AddSaleRepository): UpdateSaleClientUseCase =
UpdateSaleClientUseCase(addSaleRepository)
/**
* Provides [GetCartFlowUseCase].
*/
@Provides
fun providesGetCartFlowUseCase(addSaleRepository: AddSaleRepository, detailsSaleRepository: DetailsSaleRepository): GetCartFlowUseCase =
GetCartFlowUseCase(addSaleRepository, detailsSaleRepository)
/**
* Provides [GetAllSalesUseCase].
*/
@Provides
fun provideGetAllSalesUseCase(
allSalesRepository: AllSalesRepository
) = GetAllSalesUseCase(allSalesRepository)
/**
* Provides [CheckoutSaleUseCase].
*/
@Provides
fun provideSaveSaleUseCase(
allSalesRepository: AddSaleRepository
) = CheckoutSaleUseCase(allSalesRepository)
/**
* Provides [GetDetailsOfSaleByIdUseCase].
*/
@Provides
fun providesGetDetailsSaleUseCase(repo: DetailsSaleRepository) =
GetDetailsOfSaleByIdUseCase(repo)
/**
* Provides [DeleteTicketByIdUseCase].
*/
@Provides
fun providesDeleteTicketByIdUseCase(repo: DetailsSaleRepository) =
DeleteTicketByIdUseCase(repo)
/**
* Provides [UpdateSaleStatusUseCase].
*/
@Provides
fun providesUpdateSaleStatus(repo: DetailsSaleRepository) =
UpdateSaleStatusUseCase(repo)
/**
* Provides [DeleteProductOnCartUseCase].
*/
@Provides
fun providesDeleteProductOnCartUseCase(addSaleRepository: AddSaleRepository) =
DeleteProductOnCartUseCase(addSaleRepository)
/**
* Provides [GetSalesMetricsUseCase].
*/
@Provides
fun providesGetSalesMetrics(allSalesRepository: AllSalesRepository) =
GetSalesMetricsUseCase(allSalesRepository)
}