public async Task <bool> AddUpdateCurrencyRateAsync(cor_currencyrate model)
        {
            if (model.CurrencyRateId > 0)
            {
                var item = await _dataContext.cor_currencyrate.FindAsync(model.CurrencyRateId);

                _dataContext.Entry(item).CurrentValues.SetValues(model);
            }
            else
            {
                await _dataContext.cor_currencyrate.AddAsync(model);
            }
            return(await _dataContext.SaveChangesAsync() > 0);
        }
        public async Task <LookUpRegRespObj> Handle(AddUpdateCurrencyRateCommand request, CancellationToken cancellationToken)
        {
            try
            {
                if (_dataContext.cor_currencyrate.FirstOrDefault(c => c.CurrencyId == request.CurrencyId && c.Date == request.Date && c.Deleted == false) != null)
                {
                    return(new LookUpRegRespObj
                    {
                        Status = new APIResponseStatus
                        {
                            IsSuccessful = false,
                            Message = new APIResponseMessage
                            {
                                FriendlyMessage = "This Currency rate already exist"
                            }
                        }
                    });
                }
                var item = new cor_currencyrate
                {
                    Active       = true,
                    CreatedOn    = request.CreatedOn,
                    Deleted      = false,
                    CreatedBy    = request.CreatedBy,
                    SellingRate  = request.SellingRate,
                    CurrencyId   = request.CurrencyId,
                    BuyingRate   = request.BuyingRate,
                    CurrencyCode = request.CurrencyCode,
                    Date         = request.Date,
                };
                if (request.CurrencyRateId > 0)
                {
                    item.CurrencyRateId = request.CurrencyRateId;
                }
                await _repo.AddUpdateCurrencyRateAsync(item);

                return(new LookUpRegRespObj
                {
                    Status = new APIResponseStatus
                    {
                        IsSuccessful = true,
                        Message = new APIResponseMessage
                        {
                            FriendlyMessage = "Successful"
                        }
                    }
                });
            }
            catch (Exception ex)
            {
                #region Log error to file
                return(new LookUpRegRespObj
                {
                    Status = new APIResponseStatus
                    {
                        IsSuccessful = false,
                        Message = new APIResponseMessage
                        {
                            FriendlyMessage = "Error occured!! Unable to process request",
                            TechnicalMessage = $"{ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}"
                        }
                    }
                });

                #endregion
            }
        }
Beispiel #3
0
            public async Task <FileUploadRespObj> Handle(UploadCurrencyRateCommand request, CancellationToken cancellationToken)
            {
                var apiResponse = new FileUploadRespObj {
                    Status = new APIResponseStatus {
                        IsSuccessful = false, Message = new APIResponseMessage()
                    }
                };

                try
                {
                    var files = _accessor.HttpContext.Request.Form.Files;

                    var byteList = new List <byte[]>();
                    foreach (var fileBit in files)
                    {
                        if (fileBit.Length > 0)
                        {
                            using (var ms = new MemoryStream())
                            {
                                await fileBit.CopyToAsync(ms);

                                byteList.Add(ms.ToArray());
                            }
                        }
                    }

                    var _currency = await _repo.GetAllCurrencyAsync();

                    var uploadedRecord = new List <CommonLookupsObj>();
                    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

                    if (byteList.Count() > 0)
                    {
                        foreach (var byteItem in byteList)
                        {
                            using (MemoryStream stream = new MemoryStream(byteItem))
                                using (ExcelPackage excelPackage = new ExcelPackage(stream))
                                {
                                    //Use first sheet by default
                                    ExcelWorksheet workSheet    = excelPackage.Workbook.Worksheets[0];
                                    int            totalRows    = workSheet.Dimension.Rows;
                                    int            totalColumns = workSheet.Dimension.Columns;
                                    if (totalColumns != 4)
                                    {
                                        apiResponse.Status.Message.FriendlyMessage = $"Four (4) Columns Expected";
                                        return(apiResponse);
                                    }
                                    //First row is considered as the header
                                    for (int i = 2; i <= totalRows; i++)
                                    {
                                        var lkp = new CommonLookupsObj
                                        {
                                            ExcelLineNumber  = i,
                                            Code             = workSheet.Cells[i, 1]?.Value != null ? workSheet.Cells[i, 1]?.Value.ToString() : string.Empty,
                                            Description      = workSheet.Cells[i, 2]?.Value != null ? workSheet.Cells[i, 2]?.Value.ToString() : string.Empty,
                                            SkillDescription = workSheet.Cells[i, 3]?.Value != null ? workSheet.Cells[i, 3]?.Value.ToString() : string.Empty,
                                            Skills           = workSheet.Cells[i, 4]?.Value != null ? workSheet.Cells[i, 4]?.Value.ToString() : string.Empty,
                                        };
                                        uploadedRecord.Add(lkp);
                                    }
                                }
                        }
                    }

                    var _CurrencyRateList = await _repo.GetAllCurrencyRateAsync();

                    if (uploadedRecord.Count > 0)
                    {
                        foreach (var item in uploadedRecord)
                        {
                            if (string.IsNullOrEmpty(item.Code))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"SellingRate Cannot be empty detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                item.SellingRate = Convert.ToDouble(item.Code);
                            }
                            if (string.IsNullOrEmpty(item.Description))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"BuyingRate Cannot be empty detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                item.BuyingRate = Convert.ToDouble(item.Description);
                            }
                            if (string.IsNullOrEmpty(item.SkillDescription))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Currency Cannot be empty detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                var currency = _currency.FirstOrDefault(s => s.CurrencyName.ToLower().Trim() == item.SkillDescription.ToLower().ToLower());
                                if (currency == null)
                                {
                                    apiResponse.Status.Message.FriendlyMessage = $"Unable to Identify Currency detected on line {item.ExcelLineNumber}";
                                    return(apiResponse);
                                }
                                item.ParentId = currency.CurrencyId;
                            }
                            if (string.IsNullOrEmpty(item.Skills))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Job Title Cannot be empty detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                if (item.Skills.Split('/').Length != 3)
                                {
                                    apiResponse.Status.Message.FriendlyMessage = $"Invalid Date detected on line {item.ExcelLineNumber}";
                                    return(apiResponse);
                                }
                                item.Date = Convert.ToDateTime(item.Skills);
                            }
                            var currencyRate = _CurrencyRateList.FirstOrDefault(c => c.CurrencyId == item.ParentId && c.Date == item.Date && c.Deleted == false);

                            if (currencyRate == null)
                            {
                                var CurrencyRate = new cor_currencyrate();
                                CurrencyRate.BuyingRate  = item.BuyingRate;
                                CurrencyRate.SellingRate = item.SellingRate;
                                CurrencyRate.CurrencyId  = item.ParentId;
                                CurrencyRate.Date        = item.Date;
                                await _repo.AddUpdateCurrencyRateAsync(CurrencyRate);
                            }
                            else
                            {
                                currencyRate.BuyingRate  = item.BuyingRate;
                                currencyRate.SellingRate = item.SellingRate;
                                currencyRate.CurrencyId  = item.ParentId;
                                currencyRate.Date        = item.Date;
                                await _repo.AddUpdateCurrencyRateAsync(currencyRate);
                            }
                        }
                    }
                    apiResponse.Status.IsSuccessful            = true;
                    apiResponse.Status.Message.FriendlyMessage = "Successful";
                    return(apiResponse);
                }
                catch (Exception ex)
                {
                    apiResponse.Status.Message.FriendlyMessage = ex.Message;
                    return(apiResponse);
                }
            }