//.........
        public async Task <bool> AddUpdateCountryAsync(cor_country model)
        {
            if (model.CountryId > 0)
            {
                var item = await _dataContext.cor_country.FindAsync(model.CountryId);

                _dataContext.Entry(item).CurrentValues.SetValues(model);
            }
            else
            {
                await _dataContext.cor_country.AddAsync(model);
            }
            return(await _dataContext.SaveChangesAsync() > 0);
        }
Esempio n. 2
0
        public async Task <LookUpRegRespObj> Handle(AddUpdateCountryCommand request, CancellationToken cancellationToken)
        {
            try
            {
                if (request.CountryId < 1)
                {
                    if (await _dataContext.cor_country.AnyAsync(x => x.CountryName.Trim().ToLower() == request.CountryName.Trim().ToLower() && x.Deleted == false))
                    {
                        return(new LookUpRegRespObj
                        {
                            Status = new APIResponseStatus
                            {
                                IsSuccessful = false,
                                Message = new APIResponseMessage
                                {
                                    FriendlyMessage = "This Name Already Exist"
                                }
                            }
                        });
                    }
                }
                var item = new cor_country
                {
                    Active      = true,
                    CountryCode = request.CountryCode,
                    CountryId   = request.CountryId,
                    CountryName = request.CountryName,
                    CreatedOn   = request.CreatedOn,
                    Deleted     = false,
                    CreatedBy   = request.CreatedBy
                };

                await _repo.AddUpdateCountryAsync(item);

                return(new LookUpRegRespObj
                {
                    Status = new APIResponseStatus
                    {
                        IsSuccessful = true,
                        Message = new APIResponseMessage
                        {
                            FriendlyMessage = "Item Added successfully"
                        }
                    }
                });
            }
            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
            }
        }
        public async Task UploadCountry(byte[] record, string createdBy)
        {
            try
            {
                var uploadedRecord = new List <cor_country>();
                using (MemoryStream stream = new MemoryStream(record))
                    using (ExcelPackage excelPackage = new ExcelPackage(stream))
                    {
                        //Use first sheet by default
                        ExcelWorksheet workSheet = excelPackage.Workbook.Worksheets[1];
                        int            totalRows = workSheet.Dimension.Rows;
                        //First row is considered as the header
                        for (int i = 2; i <= totalRows; i++)
                        {
                            uploadedRecord.Add(new cor_country
                            {
                                CountryName = workSheet.Cells[i, 1].Value.ToString(),
                                CountryCode = workSheet.Cells[i, 2].Value.ToString(),
                                Active      = true,
                                Deleted     = false,
                                CreatedBy   = createdBy,
                                CreatedOn   = DateTime.Now,
                                UpdatedBy   = createdBy,
                                UpdatedOn   = DateTime.Now,
                            });
                        }
                    }
                if (uploadedRecord.Count > 0)
                {
                    foreach (var item in uploadedRecord)
                    {
                        var countryDb = await _dataContext.cor_country.FirstOrDefaultAsync(x => x.CountryCode == item.CountryCode &&
                                                                                           x.Deleted == false);

                        if (countryDb != null)
                        {
                            countryDb.CountryName = item.CountryName;
                            countryDb.CountryCode = item.CountryCode;
                            countryDb.Active      = true;
                            countryDb.Deleted     = false;
                            countryDb.UpdatedBy   = createdBy;
                            countryDb.UpdatedOn   = DateTime.Now;
                        }
                        else
                        {
                            var country = new cor_country
                            {
                                CountryName = item.CountryName,
                                CountryCode = item.CountryCode,
                                Active      = true,
                                Deleted     = false,
                                CreatedBy   = createdBy,
                                CreatedOn   = DateTime.Now,
                            };
                            _dataContext.cor_country.Add(country);
                        }
                    }

                    await _dataContext.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public async Task <FileUploadRespObj> Handle(UploadCountryCommand request, CancellationToken cancellationToken)
        {
            try
            {
                var apiResponse = new FileUploadRespObj {
                    Status = new APIResponseStatus {
                        IsSuccessful = false, Message = new APIResponseMessage()
                    }
                };

                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 userId = _accessor.HttpContext.User?.FindFirst(x => x.Type == "userId").Value;
                var user   = await _userManager.FindByIdAsync(userId);

                var _Country = await _repo.GetAllCountryAsync();

                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 != 2)
                                {
                                    apiResponse.Status.Message.FriendlyMessage = $"Two (2) Columns Expected";
                                    return(apiResponse);
                                }
                                //First row is considered as the header
                                for (int i = 2; i <= totalRows; i++)
                                {
                                    var lkp = new CommonLookupsObj
                                    {
                                        ExcelLineNumber = i,
                                        LookupName      = workSheet.Cells[i, 1]?.Value != null ? workSheet.Cells[i, 1]?.Value.ToString() : string.Empty,
                                        Code            = workSheet.Cells[i, 2]?.Value != null ? workSheet.Cells[i, 2]?.Value.ToString() : string.Empty,
                                    };
                                    uploadedRecord.Add(lkp);
                                }
                            }
                    }
                }

                var _CountryList = await _repo.GetAllCountry();

                if (uploadedRecord.Count > 0)
                {
                    foreach (var item in uploadedRecord)
                    {
                        if (string.IsNullOrEmpty(item.Code))
                        {
                            apiResponse.Status.Message.FriendlyMessage = $"Country Code can not be empty on line {item.ExcelLineNumber}";
                            return(apiResponse);
                        }
                        if (string.IsNullOrEmpty(item.LookupName))
                        {
                            apiResponse.Status.Message.FriendlyMessage = $"Country Name can not be empty on line {item.ExcelLineNumber}";
                            return(apiResponse);
                        }

                        var currentCountry = _CountryList.FirstOrDefault(c => c.CountryCode.ToLower() == item.Code.ToLower() && c.Deleted == false);

                        if (currentCountry == null)
                        {
                            var country = new cor_country
                            {
                                CountryName = item.LookupName,
                                CountryCode = item.Code,
                            };
                            await _repo.AddUpdateCountryAsync(country);
                        }
                        else
                        {
                            currentCountry.CountryName = item.LookupName;
                            currentCountry.CountryCode = item.Code;
                            await _repo.AddUpdateCountryAsync(currentCountry);
                        }
                    }
                }
                apiResponse.Status.IsSuccessful            = true;
                apiResponse.Status.Message.FriendlyMessage = "Successful";
                return(apiResponse);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }