Exemple #1
0
        /// <summary>
        /// Import doctors from XLSX file
        /// </summary>
        /// <param name="stream">Stream</param>
        /// <param name="userId"></param>
        /// <param name="iRow"></param>
        public virtual void ImportDoctorsFromXlsx(Stream stream, string userId, int iRow)
        {
            //property array
            var properties = new[]
            {
                new PropertyByName <Doctor>("FirstName"),
                new PropertyByName <Doctor>("LastName"),
                new PropertyByName <Doctor>("Email"),
                new PropertyByName <Doctor>("PhoneNumber"),

                new PropertyByName <Doctor>("Gender"),
                new PropertyByName <Doctor>("Speciality"),
                new PropertyByName <Doctor>("ShortProfile"),
                new PropertyByName <Doctor>("RegistrationNumber"),
                new PropertyByName <Doctor>("DateOfBirth"),
                new PropertyByName <Doctor>("Address1"),
                new PropertyByName <Doctor>("Address2"),
                new PropertyByName <Doctor>("Hospital"),
                new PropertyByName <Doctor>("Pincode"),
                new PropertyByName <Doctor>("City"),
                new PropertyByName <Doctor>("State"),
                new PropertyByName <Doctor>("Country"),
                new PropertyByName <Doctor>("FaxNumber"),
                new PropertyByName <Doctor>("Website"),
                new PropertyByName <Doctor>("ConsultationFee"),
                new PropertyByName <Doctor>("IsAvailability")
            };

            var manager = new PropertyManager <Doctor>(properties);

            //var tt = manager.GetProperty("FaxNumber").StringValue.Trim();
            //var tt1 = manager.GetProperty("Hospital").StringValue.Trim();
            //var tt2 = manager.GetProperty("PhoneNumber").StringValue.Trim();
            //var tt3 = manager.GetProperty("Website").StringValue.Trim();

            using (var xlPackage = new ExcelPackage(stream))
            {
                // get the first worksheet in the workbook
                var worksheet = xlPackage.Workbook.Worksheets.FirstOrDefault();
                if (worksheet == null)
                {
                    throw new DptsException("No worksheet found");
                }

                if (userId != null && iRow > 0)
                {
                    var allColumnsAreEmpty = manager.GetProperties
                                             .Select(property => worksheet.Cells[iRow, property.PropertyOrderPosition])
                                             .All(cell => cell == null || cell.Value == null || String.IsNullOrEmpty(cell.Value.ToString()));

                    if (allColumnsAreEmpty)
                    {
                        throw new DptsException("column are empty");
                    }

                    manager.ReadFromXlsx(worksheet, iRow);
                    string  sds   = manager.GetProperty("IsAvailability").StringValue;
                    string  dsdsd = manager.GetProperty("ConsultationFee").StringValue;
                    bool    rre   = bool.Parse(manager.GetProperty("IsAvailability").StringValue);
                    decimal ds    = decimal.Parse(manager.GetProperty("ConsultationFee").StringValue);

                    #region DoctorInfo
                    var doctor = new Doctor
                    {
                        DoctorId     = userId,
                        Gender       = manager.GetProperty("Gender").StringValue,
                        ShortProfile = manager.GetProperty("ShortProfile").StringValue,
                        // Language = manager.GetProperty("Qualifications").StringValue,
                        RegistrationNumber = manager.GetProperty("RegistrationNumber").StringValue,
                        DateOfBirth        = manager.GetProperty("DateOfBirth").StringValue,
                        IsAvailability     = bool.Parse(manager.GetProperty("IsAvailability").StringValue),
                        ConsultationFee    = decimal.Parse(manager.GetProperty("ConsultationFee").StringValue)
                    };
                    _doctorService.AddDoctor(doctor);
                    #endregion

                    #region Specialities
                    if (!string.IsNullOrWhiteSpace(manager.GetProperty("Speciality").StringValue) &&
                        !string.IsNullOrWhiteSpace(doctor.DoctorId))
                    {
                        var specilities = manager.GetProperty("Speciality").StringValue.Trim();
                        foreach (var item in specilities.Split(',').ToList())
                        {
                            var spec = _specialityService.GetAllSpeciality(false).Where(s => s.Title.Contains(item)).FirstOrDefault();
                            if (spec != null)
                            {
                                var sp = new SpecialityMapping
                                {
                                    Speciality_Id = spec.Id,
                                    Doctor_Id     = doctor.DoctorId,
                                    DateCreated   = DateTime.UtcNow,
                                    DateUpdated   = DateTime.UtcNow
                                };
                                if (!_specialityService.IsDoctorSpecialityExists(sp))
                                {
                                    _specialityService.AddSpecialityByDoctor(sp);
                                }
                            }
                        }

                        //foreach (var specilityMap in specilities.Split(',').ToList().Select(item => new SpecialityMapping
                        //{
                        //    Speciality_Id =
                        //    Doctor_Id = doctor.DoctorId,
                        //    DateCreated = DateTime.UtcNow,
                        //    DateUpdated = DateTime.UtcNow
                        //}).Where(specilityMap => !_specialityService.IsDoctorSpecialityExists(specilityMap)))
                        //{
                        //    _specialityService.AddSpecialityByDoctor(specilityMap);
                        //}
                    }
                    #endregion

                    #region Address
                    if (!string.IsNullOrWhiteSpace(doctor.DoctorId) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("Pincode").StringValue) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("Address1").StringValue) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("City").StringValue) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("State").StringValue) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("Country").StringValue))
                    {
                        int    countryId = 0;
                        int    stateId   = 0;
                        string rr1       = manager.GetProperty("Country").StringValue.Trim();
                        string rr2       = manager.GetProperty("Address1").StringValue.Trim();
                        string rr3       = manager.GetProperty("City").StringValue.Trim();
                        var    country   = _countryService.GetAllCountries().Where(c => c.Name.Contains(manager.GetProperty("Country").StringValue.Trim())).FirstOrDefault();
                        countryId = (country == null) ? 0 : country.Id;
                        string rr = manager.GetProperty("State").StringValue.Trim();

                        var states = _stateProvinceService.GetAllStateProvince().Where(c => c.Name.Contains(rr)).FirstOrDefault();
                        stateId = (states == null) ? 0 : states.Id;

                        var address = new Address
                        {
                            StateProvinceId = stateId,
                            //_,
                            CountryId     = countryId,
                            Address1      = manager.GetProperty("Address1").StringValue.Trim(),
                            Address2      = manager.GetProperty("Address2").StringValue.Trim(),
                            Hospital      = manager.GetProperty("Hospital").StringValue.Trim(),
                            FaxNumber     = manager.GetProperty("FaxNumber").StringValue.Trim(),
                            PhoneNumber   = manager.GetProperty("PhoneNumber").StringValue.Trim(),
                            Website       = manager.GetProperty("Website").StringValue.Trim(),
                            ZipPostalCode = manager.GetProperty("Pincode").StringValue.Trim(),
                            City          = manager.GetProperty("City").StringValue.Trim()
                        };

                        string docAddress    = address.Address1 + ", " + address.City + ", " + states.Name + ", " + address.ZipPostalCode;
                        var    geoCoodrinate = GetGeoCoordinate(docAddress);
                        if (geoCoodrinate.Count == 2)
                        {
                            address.Latitude  = geoCoodrinate[Constants.Lat];
                            address.Longitude = geoCoodrinate[Constants.Lng];
                        }
                        else
                        {
                            var geoCoodrinates = GetGeoCoordinate(address.ZipPostalCode);
                            if (geoCoodrinates.Count == 2)
                            {
                                address.Latitude  = geoCoodrinates[Constants.Lat];
                                address.Longitude = geoCoodrinates[Constants.Lng];
                            }
                        }
                        _addressService.AddAddress(address);
                        if (doctor != null)
                        {
                            var addrMap = new AddressMapping
                            {
                                AddressId = address.Id,
                                UserId    = doctor.DoctorId
                            };
                            _addressService.AddAddressMapping(addrMap);
                        }
                    }
                    #endregion
                }
            }
        }
 public ActionResult AddAddress([FromBody] AddressDto dto)
 {
     _addressService.AddAddress(dto);
     return(Ok());
 }