public async Task <AppDetailQuotes> CreateDetaiQuotes(AppDetailQuotesConversionUnitCreateDto dto)
        {
            var generalQuotes = await _unitOfWork.AppGeneralQuotesRepository.GetById(dto.AppGeneralQuotesId);

            if (generalQuotes != null)
            {
                AppDetailQuotes newDetail = new AppDetailQuotes();
                newDetail.AppGeneralQuotesId = dto.AppGeneralQuotesId;
                newDetail.Cotizacion         = generalQuotes.Cotizacion;
                newDetail.DiasEntrega        = 1;
                newDetail.IdProducto         = dto.AppProductId;
                var producto = await _unitOfWork.AppProductsRepository.GetById(dto.AppProductId);

                newDetail.NombreComercialProducto = producto.Description1;
                newDetail.Cantidad      = 1;
                newDetail.DiasEntrega   = 1;
                newDetail.IdEstatus     = generalQuotes.IdEstatus;
                newDetail.IdUnidad      = dto.AppUnitIdSince;
                newDetail.PrecioUsd     = 0;
                newDetail.Precio        = 0;
                newDetail.Total         = 0;
                newDetail.TotalUsd      = 0;
                newDetail.FechaRegistro = DateTime.Now;
                newDetail.CreatedAt     = DateTime.Now;
                newDetail.UpdatedAt     = DateTime.Now;
                newDetail.Observaciones = "";
                newDetail.UserCreate    = "";
                await _unitOfWork.AppDetailQuotesRepository.Add(newDetail);

                await _unitOfWork.SaveChangesAsync();

                return(await _unitOfWork.AppDetailQuotesRepository.GetById(newDetail.Id));
            }
            else
            {
                return(null);
            }
        }
        public async Task <ApiResponse <List <AppDetailQuotesConversionUnit> > > CreateAppDetailQuotesConversionUnit(AppDetailQuotesConversionUnitCreateDto appDetailQuotesConversionUnitCreateDto)
        {
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };

            List <AppDetailQuotesConversionUnit> resultDto = new List <AppDetailQuotesConversionUnit>();
            ApiResponse <List <AppDetailQuotesConversionUnit> > response = new ApiResponse <List <AppDetailQuotesConversionUnit> >(resultDto);

            try
            {
                AppDetailQuotes newDetail = new AppDetailQuotes();
                if (appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId == 0)
                {
                    newDetail = await CreateDetaiQuotes(appDetailQuotesConversionUnitCreateDto);

                    if (newDetail != null)
                    {
                        appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId = newDetail.Id;
                    }
                }


                await DeteleAppDetailQuotesByDetailQuotesId(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                List <AppTemplateConversionUnit> template = await _unitOfWork.AppTemplateConversionUnitRepository.GetTemplateByUnits(appDetailQuotesConversionUnitCreateDto.AppUnitIdSince, appDetailQuotesConversionUnitCreateDto.AppUnitIdUntil);

                var listDetailQuotesConversion = await CreateListFromTemplate(template, (int)appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                foreach (var item in listDetailQuotesConversion)
                {
                    var variable = appDetailQuotesConversionUnitCreateDto.AppTemplateConversionUnitGetDto.Where(x => x.AppVariableId == item.AppVariableId).FirstOrDefault();
                    if (variable != null && item.Formula == "")
                    {
                        item.Value = variable.Value;
                    }
                    await Insert(item);
                }


                await CalculateAppDetailQuotesByDetailQuotesId(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                var totalValue = _unitOfWork.AppDetailQuotesConversionUnitRepository.TotalValue(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);
                var cantidadPorUnidadProduccion = _unitOfWork.AppDetailQuotesConversionUnitRepository.GetCantidadPorUnidadProduccion(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);
                var detailQuote = await _unitOfWork.AppDetailQuotesRepository.GetById(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                if (detailQuote != null)
                {
                    detailQuote.ValorConvertido             = totalValue;
                    detailQuote.CantidadPorUnidadProduccion = cantidadPorUnidadProduccion;
                    detailQuote.UnitPriceBaseProduction     = detailQuote.IdProductoNavigation.UnitPrice;
                    if (detailQuote.UnitPriceBaseProduction > 0)
                    {
                        detailQuote.UnitPriceConverted = detailQuote.UnitPriceBaseProduction * detailQuote.ValorConvertido;
                    }
                    else
                    {
                        detailQuote.UnitPriceConverted = 0;
                    }
                    detailQuote.IdUnidad = appDetailQuotesConversionUnitCreateDto.AppUnitIdSince;
                    _unitOfWork.AppDetailQuotesRepository.Update(detailQuote);
                    await _unitOfWork.SaveChangesAsync();
                }

                resultDto = await _unitOfWork.AppDetailQuotesConversionUnitRepository.GetByAppDetailQuotesId(appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId);

                response.Meta = metadata;
                response.Data = resultDto;


                return(response);
            }
            catch (Exception ex)
            {
                metadata.IsValid = false;
                metadata.Message = ex.InnerException.Message;
                response.Meta    = metadata;
                response.Data    = resultDto;


                return(response);
            }
        }
Esempio n. 3
0
        public async Task <IActionResult> CreateAppDetailQuotesConversionUnit(AppDetailQuotesConversionUnitCreateDto appDetailQuotesConversionUnitCreateDto)
        {
            Metadata metadata = new Metadata
            {
                IsValid    = false,
                Message    = "",
                TotalCount = 0
            };


            try
            {
                //var detailQuotesConversionUnit = await _appDetailQuotesConversionUnitService.CreateAppDetailQuotesConversionUnit(appDetailQuotesConversionUnitCreateDto);



                //return Ok(detailQuotesConversionUnit);
                var detailQuotesConversionUnit = await _appDetailQuotesConversionUnitService.CreateAppDetailQuotesConversionUnit(appDetailQuotesConversionUnitCreateDto);

                return(Ok(detailQuotesConversionUnit));


                //if (appDetailQuotesConversionUnitCreateDto.AppDetailQuotesId >0)
                //{
                //    var detailQuotesConversionUnit = await _appDetailQuotesConversionUnitService.CreateAppDetailQuotesConversionUnit(appDetailQuotesConversionUnitCreateDto);
                //    return Ok(detailQuotesConversionUnit);
                //}
                //else
                //{
                //    AppConversionUnitGenericCreateDto dto = new AppConversionUnitGenericCreateDto();

                //    dto.AppProductId = appDetailQuotesConversionUnitCreateDto.AppProductId;
                //    dto.AppUnitIdSince = appDetailQuotesConversionUnitCreateDto.AppUnitIdSince;
                //    dto.AppUnitIdUntil = appDetailQuotesConversionUnitCreateDto.AppUnitIdUntil;
                //    List<AppTemplateConversionGenericUnitGetDto> newList = new List<AppTemplateConversionGenericUnitGetDto>();
                //    if (appDetailQuotesConversionUnitCreateDto.AppTemplateConversionUnitGetDto != null)
                //    {


                //        foreach (var item in appDetailQuotesConversionUnitCreateDto.AppTemplateConversionUnitGetDto)
                //        {
                //            AppTemplateConversionGenericUnitGetDto newItem = new AppTemplateConversionGenericUnitGetDto();
                //            newItem.AppVariableId = item.AppVariableId;
                //            newItem.Description = item.Description;
                //            newItem.Value = item.Value;
                //            newList.Add(newItem);

                //        }
                //        dto.AppTemplateConversionGenericUnitGetDto = newList;
                //    }


                //    var detailQuotesConversionUnit = await _appDetailQuotesConversionUnitService.ConversionUnitGeneric(dto);
                //    return Ok(detailQuotesConversionUnit);
                //}
            }
            catch (Exception e)
            {
                metadata.IsValid = false;
                metadata.Message = e.InnerException.Message;
                var responseError = new ApiResponse <AppDetailQuotesGetDto>(null)
                {
                    Meta = metadata
                };


                return(Ok(responseError));
            }
        }