Exemple #1
0
        public Responce <List <AppUsersDTO> > GetUsersList()
        {
            Responce <List <AppUsersDTO> > responce    = new Responce <List <AppUsersDTO> >();
            List <AppUsersDTO>             appUsersDTO = new List <AppUsersDTO>();

            try
            {
                responce.Success = true;
                using (SSCEntities db = new SSCEntities())
                {
                    appUsersDTO = db.UserDetailWithRole?.Select(a => new AppUsersDTO()
                    {
                        Id = a.Id, Name = a.Name, Email = a.Email, City = a.City, Phone = a.Phonenumber, RoleId = a.RoleId, UserRole = a.UserRole
                    }).ToList();
                    responce.ResponeContent = appUsersDTO;
                }
            }
            catch (Exception ex)
            {
                responce.Success        = false;
                responce.Message        = $"ERROR GetUsersList : {ex.InnerException}";
                responce.ResponeContent = appUsersDTO;
            }
            return(responce);
        }
Exemple #2
0
        public Responce <List <AppRolesDTO> > GetRoles()
        {
            Responce <List <AppRolesDTO> > responce     = new Responce <List <AppRolesDTO> >();
            List <AppRolesDTO>             appRolesDTOs = new List <AppRolesDTO>();

            try
            {
                responce.Success = true;
                using (SSCEntities db = new SSCEntities())
                {
                    appRolesDTOs = db.AspNetRoles.Select(a => new AppRolesDTO()
                    {
                        Id = a.Id, Name = a.Name
                    }).ToList();
                    responce.ResponeContent = appRolesDTOs;
                }
            }
            catch (Exception ex)
            {
                responce.Success        = false;
                responce.Message        = $"ERROR GetRoles :{ex.InnerException}";
                responce.ResponeContent = appRolesDTOs;
            }
            return(responce);
        }
Exemple #3
0
        public async Task <Responce <bool> > UpdateCityMail(ChnageCityMailRequest chnageCityMailRequest)
        {
            Responce <bool> Responce = new Responce <bool>();

            Responce.Success = true;
            try
            {
                using (var db = new SSCEntities())
                {
                    Citys citys = db.Citys.Find(chnageCityMailRequest.Cityid);
                    citys.MCEmail         = chnageCityMailRequest.MCEmail;
                    citys.FcciEmail       = chnageCityMailRequest.FCCIEmail;
                    db.Entry(citys).State = System.Data.Entity.EntityState.Modified;
                    await db.SaveChangesAsync();

                    Responce.ResponeContent = true;
                }
            }
            catch (Exception ex)
            {
                Responce.Success        = false;
                Responce.ResponeContent = false;
                Responce.Message        = $"ERROR UpdateCityMail :{ex.InnerException}";
            }
            return(Responce);
        }
        public HttpResponseMessage GetComplaintlist()
        {
            var       SSCEntities = new SSCEntities();
            DataTable dt          = SSCEntities.ComplaintList.OrderByDescending(item => item.CreateDate).ToList().ToDataTable();

            //Convert the rendering of the gridview to a string representation
            StringWriter   sw  = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);

            GridView gv = new GridView();

            gv.DataSource = dt;
            gv.DataBind();

            PrepareGridViewForExport(gv);

            gv.RenderControl(htw);

            //Open a memory stream that you can use to write back to the response
            byte[] byteArray = Encoding.ASCII.GetBytes(sw.ToString());


            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new ByteArrayContent(byteArray);
            response.Content.Headers.ContentDisposition          = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            response.Content.Headers.ContentDisposition.FileName = "Complaints-" + DateTime.Now.ToString("yyyyMMddHHmm") + ".xls";
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");

            return(response);
        }
 public static AspNetUsers GetUserName(string UserId)
 {
     using (SSCEntities db = new SSCEntities())
     {
         var user = db.AspNetUsers.Find(UserId);
         return(user);
     }
 }
        public ActionResult ComplaintEmail(int Id)
        {
            SSCEntities = new SSCEntities();
            var complaints = SSCEntities.Complaints.Find(Id);

            if (complaints != null)
            {
                return(View(complaints));
            }
            return(RedirectToAction("Error", "Home"));
        }
        public async Task <IHttpActionResult> UpdateUserInfo(UpdateUserInfoRequest model)
        {
            Responce <UserInfoViewModel> responce = new Responce <UserInfoViewModel>();

            responce.Success = true;
            try
            {
                string City   = "";
                string UserId = "";
#pragma warning disable CS0219 // The variable 'CityId' is assigned but its value is never used
                string CityId = "";
#pragma warning restore CS0219 // The variable 'CityId' is assigned but its value is never used
                string Name        = "";
                string PhoneNumber = "";
                var    UserRole    = await UserManager.GetRolesAsync(User.Identity.GetUserId());

                //IdentityUser user = await UserManager.FindByIdAsync(model.UserId);
                using (SSCEntities db = new SSCEntities())
                {
                    var AspNetUser = db.AspNetUsers.Find(model.UserId);
                    AspNetUser.City            = model.City;
                    AspNetUser.Name            = model.Name;
                    AspNetUser.PhoneNumber     = model.PhoneNumber;
                    AspNetUser.CityId          = model.CityId;
                    db.Entry(AspNetUser).State = System.Data.Entity.EntityState.Modified;
                    await db.SaveChangesAsync();

                    City        = AspNetUser.City;
                    UserId      = AspNetUser.Id;
                    PhoneNumber = AspNetUser.PhoneNumber;
                    Name        = AspNetUser.Name;

                    responce.ResponeContent = new UserInfoViewModel
                    {
                        Email       = AspNetUser.Email,
                        City        = City,
                        UserId      = UserId,
                        PhoneNumber = PhoneNumber,
                        Name        = Name,
                        UserRole    = UserRole.FirstOrDefault()
                    };
                }
                return(Ok(responce));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemple #8
0
        public Responce <List <AppUsersDTO> > GetUsersListByCity(MobileRequest mobileRequest)
        {
            Responce <List <AppUsersDTO> > responce    = new Responce <List <AppUsersDTO> >();
            List <AppUsersDTO>             appUsersDTO = new List <AppUsersDTO>();

            try
            {
                responce.Success = true;
                using (SSCEntities db = new SSCEntities())
                {
                    List <UserDetailWithRole> UserList = new List <UserDetailWithRole>();
                    var  Users          = db.AspNetUsers.Find(mobileRequest.UserId);
                    var  UserRoles      = db.GetUserRole(mobileRequest.UserId).FirstOrDefault().UserRole;
                    bool UsersCityAdded = false;

                    foreach (Citys city in db.Citys.Where(a => a.AdminEmail == Users.UserName || UserRoles.Equals("Site Admin")).ToList())
                    {
                        if (Users.City.ToLower() == city.CityName.ToLower())
                        {
                            UsersCityAdded = true;
                        }

                        UserList = UserList.Concat(db.UserDetailWithRole.Where(a => a.City.ToLower() == city.CityName.ToLower()).ToList()).ToList();
                    }

                    if (!UsersCityAdded)
                    {
                        UserList = UserList.Concat(db.UserDetailWithRole.Where(a => a.City.ToLower() == Users.City.ToLower()).ToList()).ToList();
                    }

                    appUsersDTO = UserList?.Select(a => new AppUsersDTO()
                    {
                        Id = a.Id, Name = a.Name, Email = a.Email, City = a.City, Phone = a.Phonenumber, RoleId = a.RoleId, UserRole = a.UserRole
                    }).ToList();

                    //var Users = db.AspNetUsers.Find(mobileRequest.UserId);
                    //appUsersDTO = db.UserDetailWithRole.Where(a => a.City.ToLower() == Users.City.ToLower())?.Select(a => new AppUsersDTO() { Id = a.Id, Name = a.Name, Email = a.Email, City = a.City, Phone = a.Phonenumber, RoleId = a.RoleId, UserRole = a.UserRole }).ToList();

                    responce.ResponeContent = appUsersDTO;
                }
            }
            catch (Exception ex)
            {
                responce.Success        = false;
                responce.Message        = $"ERROR GetUsersList : {ex.InnerException}";
                responce.ResponeContent = appUsersDTO;
            }
            return(responce);
        }
        public async Task <IHttpActionResult> SendMail(MobileRequest mobileRequest)
        {
            Boolean EmailTest   = false;
            string  EmailTestTo = "*****@*****.**";

            if (ConfigurationManager.AppSettings.AllKeys.Contains("EmailTest"))
            {
                EmailTest = Convert.ToBoolean(ConfigurationManager.AppSettings["EmailTest"].ToString());
            }

            if (ConfigurationManager.AppSettings.AllKeys.Contains("EmailTestTo"))
            {
                EmailTestTo = ConfigurationManager.AppSettings["EmailTestTo"].ToString();
            }

            Responce <List <bool> > responce = new Responce <List <bool> >();

            responce.Success = true;
            try
            {
                using (var SSCEntities = new SSCEntities())
                {
                    var complaints = SSCEntities.Complaints.Find(mobileRequest.Id);
                    if (complaints != null && complaints.IsEmailSend == false)
                    {
                        await SendMailMethod(complaints, EmailTest?EmailTestTo : complaints.Citys.FcciEmail);
                        await SendMailMethod(complaints, EmailTest?EmailTestTo : complaints.Citys.MCEmail);

                        complaints.IsEmailSend              = true;
                        complaints.ComplainStatus           = (int)ComplaintStatusEnum.Registered;
                        SSCEntities.Entry(complaints).State = System.Data.Entity.EntityState.Modified;
                        await SSCEntities.SaveChangesAsync();
                    }
                }
            }
#pragma warning disable CS0168 // The variable 'ex' is declared but never used
            catch (Exception ex)
#pragma warning restore CS0168 // The variable 'ex' is declared but never used
            {
                responce.Success = false;
            }
            return(Ok(responce));
        }
        public async Task <UserInfoViewModel> GetUserInfoAsync()
        {
            ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);
            string            City          = "";
            string            UserId        = "";

#pragma warning disable CS0219 // The variable 'CityId' is assigned but its value is never used
            string CityId = "";
#pragma warning restore CS0219 // The variable 'CityId' is assigned but its value is never used
            string Name        = "";
            string PhoneNumber = "";
            var    Email       = User.Identity.GetUserName();
            var    UserRole    = await UserManager.GetRolesAsync(User.Identity.GetUserId());

            using (SSCEntities db = new SSCEntities())
            {
                var User = db.AspNetUsers.Where(a => a.UserName == Email)?.FirstOrDefault();
                if (User != null)
                {
                    City        = User.City;
                    UserId      = User.Id;
                    PhoneNumber = User.PhoneNumber;
                    Name        = User.Name;
                }
            }

            return(new UserInfoViewModel
            {
                Email = User.Identity.GetUserName(),
                HasRegistered = externalLogin == null,
                LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null,
                City = City,
                UserId = UserId,
                PhoneNumber = PhoneNumber,
                Name = Name,
                UserRole = UserRole.FirstOrDefault()
            });
        }
Exemple #11
0
        public Responce <bool> UpdateUserRole(UpdateUserRoleRequest request)
        {
            Responce <bool> responce = new Responce <bool>();

            responce.Success = true;

            try
            {
                responce.Success = true;
                using (SSCEntities db = new SSCEntities())
                {
                    db.UpdateUserRole(request.RoleId, request.UserId);
                    responce.ResponeContent = true;
                }
            }
            catch (Exception ex)
            {
                responce.Success        = false;
                responce.Message        = $"ERROR UpdateUserRole : {ex.InnerException}";
                responce.ResponeContent = false;
            }
            return(responce);
        }
#pragma warning disable CS1998 // This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
        public async Task <Responce <List <ComplaintsDTO> > > GetComplaint(MobileRequest mobileRequest)
#pragma warning restore CS1998 // This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
        {
            Responce <List <ComplaintsDTO> > Responce = new Responce <List <ComplaintsDTO> >();

            Responce.Success = true;
            try
            {
                List <ComplaintsDTO> Complaints     = new List <ComplaintsDTO>();
                List <Complaints>    ComplaintsList = new List <Complaints>();

                using (SSCEntities db = new SSCEntities())
                {
                    if (mobileRequest.Id != 0)
                    {
                        var Getcomplaintbyid = db.Complaints.Find(mobileRequest.Id);
                        if (Getcomplaintbyid != null)
                        {
                            ComplaintsList.Add(Getcomplaintbyid);
                        }
                    }
                    else
                    {
                        var UserCity  = db.AspNetUsers.Find(mobileRequest.Username).City;
                        var UserName  = db.AspNetUsers.Find(mobileRequest.Username).UserName;
                        var CityId    = db.Citys.Where(a => a.CityName.ToLower().Equals(UserCity.ToLower()))?.FirstOrDefault().Id;
                        var UserRoles = db.GetUserRole(mobileRequest.Username).FirstOrDefault().UserRole;

                        switch (UserRoles)
                        {
                        case "Volunteer":
                            ComplaintsList = db.Complaints.Where(a => a.UserId.Trim().ToLower() == mobileRequest.Username.Trim().ToLower()).ToList();
                            break;

                        case "Controller":
                            ComplaintsList = db.Complaints.Where(a => a.City == CityId).ToList();
                            break;

                        case "Admin":
                            foreach (Citys city in db.Citys.Where(a => a.AdminEmail == UserName || a.Id == CityId).ToList())
                            {
                                ComplaintsList = ComplaintsList.Concat(db.Complaints.Where(a => a.City == city.Id).ToList()).ToList();
                            }
                            break;

                        case "Site Admin":
                            ComplaintsList = db.Complaints.ToList();
                            break;
                        }

                        //if (UserRoles.Equals("Volunteer"))
                        //{
                        //ComplaintsList = db.Complaints.Where(a=>a.City==CityId && a.UserId.Trim().ToLower()== mobileRequest.Username.Trim().ToLower()).ToList();

                        //}
                        //else
                        //{
                        //        ComplaintsList = db.Complaints.Where(a => a.City == CityId).ToList();
                        //}
                    }

                    Complaints = ComplaintsList?.Select(a => a.MapComplaintsToDTO()).OrderByDescending(a => a.ModifiedDate).OrderBy(a => a.ComplainStatus).ToList();
                    Responce.ResponeContent = Complaints;
                }
            }
            catch (Exception ex)
            {
                Responce.Success = false;
                Responce.Message = $"ERROR GetComplaint :{ex.ToString()}";
            }
            return(Responce);
        }
Exemple #13
0
 public CityService()
 {
     SSCEntities = new SSCEntities();
 }
Exemple #14
0
        public async Task <Responce <bool> > UpsertCity(CityDTO model)
        {
            Responce <bool> Responce = new Responce <bool>();

            Responce.Success = true;
            try
            {
                using (var db = new SSCEntities())
                {
                    if (model.IsCreate)
                    {
                    }
                    else
                    {
                    }

                    var IsAdminEmailExist = db.AspNetUsers.Where(a => a.Email.ToLower() == model.AdminEmail.ToLower())?.ToList();
                    if (IsAdminEmailExist.Count > 0)
                    {
                        DateTime dateTime = DateTime.UtcNow;
                        Citys    citys    = db.Citys.Find(model.Id) ?? new Citys();
                        citys.MCEmail    = model.MCEmail;
                        citys.FcciEmail  = model.FcciEmail;
                        citys.CityName   = model.CityName;
                        citys.IsActive   = model.IsActive;
                        citys.AdminEmail = model.AdminEmail;
                        if (citys.Id == 0)
                        {
                            citys.CreatedBy       = model.CreatedBy;
                            citys.CreatedDate     = dateTime;
                            citys.ModifiedBy      = model.ModifiedBy;
                            citys.ModifiedDate    = dateTime;
                            db.Entry(citys).State = System.Data.Entity.EntityState.Added;
                            await db.SaveChangesAsync();
                        }
                        else
                        {
                            citys.ModifiedBy      = model.ModifiedBy;
                            citys.ModifiedDate    = dateTime;
                            citys.ModifiedBy      = model.ModifiedBy;
                            citys.ModifiedDate    = DateTime.UtcNow;
                            db.Entry(citys).State = System.Data.Entity.EntityState.Modified;
                            await db.SaveChangesAsync();
                        }

                        Responce.ResponeContent = true;
                    }
                    else
                    {
                        Responce.ResponeContent = false;
                        Responce.Success        = false;
                        Responce.Message        = "Admin email is not register";
                    }
                }
            }
            catch (Exception ex)
            {
                Responce.Success        = false;
                Responce.ResponeContent = false;
                Responce.Message        = $"ERROR UpsertCity :{ex.InnerException}";
            }
            return(Responce);
        }
Exemple #15
0
        public async Task <IHttpActionResult> CreateCity(CityDTO citydto)
        {
            Responce <bool> responce = new Responce <bool>();

            try
            {
                var IsUserExist = await UserManager.FindByNameAsync(citydto.AdminEmail);

                if (IsUserExist != null)
                {
                    var Errors = "User email already registered.";
                    responce.Fail(Errors);
                    responce.ResponeContent = false;
                    return(Content(HttpStatusCode.BadRequest, responce));
                }

                using (var db = new SSCEntities())
                {
                    var CheckCity = db.Citys.Where(a => a.CityName.ToLower() == citydto.CityName.ToLower())?.ToList() ?? new List <Citys>();
                    if (CheckCity.Count > 0)
                    {
                        responce.ResponeContent = false;
                        responce.Success        = false;
                        responce.Message        = "City already added";
                        return(Content(HttpStatusCode.BadRequest, responce));
                    }

                    DateTime dateTime = DateTime.UtcNow;

                    Citys citys = new Citys();
                    citys.MCEmail         = citydto.MCEmail;
                    citys.FcciEmail       = citydto.FcciEmail;
                    citys.CityName        = citydto.CityName;
                    citys.IsActive        = citydto.IsActive;
                    citys.AdminEmail      = citydto.AdminEmail;
                    citys.CreatedBy       = citydto.CreatedBy;
                    citys.CreatedDate     = dateTime;
                    citys.ModifiedBy      = citydto.ModifiedBy;
                    citys.ModifiedDate    = dateTime;
                    db.Entry(citys).State = System.Data.Entity.EntityState.Added;
                    await db.SaveChangesAsync();

                    var         lows        = db.Lows.ToList();
                    SSCEntities sscEntities = new SSCEntities();
                    foreach (var item in lows)
                    {
                        CityLows cityLows = new CityLows();
                        cityLows.Id    = citys.Id;
                        cityLows.LowId = item.Id;
                        sscEntities.Entry(cityLows).State = System.Data.Entity.EntityState.Added;
                        await sscEntities.SaveChangesAsync();
                    }

                    var user = new ApplicationUser()
                    {
                        UserName = citydto.AdminEmail, Email = citydto.AdminEmail, City = citydto.CityName, PhoneNumber = citydto.MobileNo, Name = citydto.UserName, IsDefaultAdmin = true, CityId = citys.Id
                    };

                    IdentityResult result = await UserManager.CreateAsync(user, citydto.Password);

                    if (!result.Succeeded)
                    {
                        var Errors = GetIdentityErrorResult(result);
                        responce.Fail(Errors);
                        responce.ResponeContent = false;

                        return(Content(HttpStatusCode.BadRequest, responce));
                    }

                    db.UpdateUserRole("989D2937-0FC5-497D-980C-B2E8583602B9", user.Id);
                    responce.ResponeContent = true;

                    responce.Success = true;
                }


                return(Ok(responce));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IHttpActionResult> Register(RegisterRequest model)
        {
            Responce <RegistrationDTO> responce = new Responce <RegistrationDTO>();
            int CityId = 0;

            responce.Success = true;
            RegistrationDTO registrationDTO = new RegistrationDTO();

            if (!ModelState.IsValid)
            {
                var Errors = GetModelStateError(ModelState);

                responce.Fail(Errors);
                return(Content(HttpStatusCode.BadRequest, responce));
            }
            SSCEntities db = new SSCEntities();

            if (model.Cityid == 0)
            {
                var UserCity = db.Citys.Where(a => a.CityName.ToLower() == model.City.ToLower()).FirstOrDefault();
                CityId = UserCity.Id;
            }
            else
            {
                CityId = model.Cityid;
            }
            //var UserCity = db.Citys.Where(a => a.CityName.ToLower() == model.City.ToLower()).FirstOrDefault();
            var user = new ApplicationUser()
            {
                UserName = model.Email, Email = model.Email, City = model.City, PhoneNumber = model.PhoneNumber, Name = model.Name, CityId = CityId
            };

            IdentityResult result = await UserManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                var Errors = GetIdentityErrorResult(result);
                responce.Fail(Errors);
                return(Content(HttpStatusCode.BadRequest, responce));
            }
            else
            {
                IdentityResult assignroleresult = await UserManager.AddToRoleAsync(user.Id, "Volunteer");

                if (!assignroleresult.Succeeded)
                {
                    var Errors = GetIdentityErrorResult(assignroleresult);
                    responce.Fail(Errors);
                    return(Content(HttpStatusCode.BadRequest, responce));
                }
                else
                {
                    registrationDTO.Name        = user.Name;
                    registrationDTO.Email       = user.Email;
                    registrationDTO.City        = user.City;
                    registrationDTO.PhoneNumber = user.PhoneNumber;
                    registrationDTO.Password    = model.Password;
                    responce.ResponeContent     = registrationDTO;
                }
            }

            return(Ok(responce));
        }
Exemple #17
0
        public async Task <IHttpActionResult> UpdateCity(CityDTO citydto)
        {
            Responce <bool> responce = new Responce <bool>();

            try
            {
                using (var db = new SSCEntities())
                {
                    var CheckCity = db.Citys.Find(citydto.Id);



                    if (CheckCity == null)
                    {
                        responce.ResponeContent = false;
                        responce.Success        = false;
                        responce.Message        = "This city should not exist";
                        return(Content(HttpStatusCode.BadRequest, responce));
                    }
                    var GetDefaultCityAdminUser = db.AspNetUsers.Where(a => a.IsDefaultAdmin == true && a.CityId == citydto.Id)?.FirstOrDefault();
                    if (GetDefaultCityAdminUser != null)
                    {
                        var appUser = await UserManager.FindByNameAsync(GetDefaultCityAdminUser.UserName);

                        if (appUser != null)
                        {
                            if (appUser.UserName.ToLower() != citydto.AdminEmail.ToLower())
                            {
                                appUser.UserName = citydto.AdminEmail;
                                appUser.Email    = citydto.AdminEmail;
                                //appUser.City = citydto.CityName;
                                //appUser.CityId = citydto.Id;

                                IdentityResult result = await UserManager.UpdateAsync(appUser);

                                if (!result.Succeeded)
                                {
                                    var Errors = GetIdentityErrorResult(result);
                                    responce.Fail(Errors);
                                    responce.ResponeContent = false;
                                    return(Content(HttpStatusCode.BadRequest, responce));
                                }
                            }
                        }
                    }



                    DateTime dateTime = DateTime.UtcNow;

                    Citys citys = CheckCity;
                    citys.MCEmail         = citydto.MCEmail;
                    citys.FcciEmail       = citydto.FcciEmail;
                    citys.CountryId       = citydto.CountryId ?? 1;
                    citys.CityName        = citydto.CityName;
                    citys.IsActive        = citydto.IsActive;
                    citys.AdminEmail      = citydto.AdminEmail;
                    citys.ModifiedBy      = citydto.ModifiedBy;
                    citys.ModifiedDate    = dateTime;
                    db.Entry(citys).State = System.Data.Entity.EntityState.Modified;
                    await db.SaveChangesAsync();

                    List <AspNetUsers> aspNetUsers = new List <AspNetUsers>();
                    aspNetUsers = db.AspNetUsers.Where(a => a.CityId == citys.Id).ToList();

                    foreach (var item in aspNetUsers)
                    {
                        item.City            = citys.CityName;
                        db.Entry(item).State = System.Data.Entity.EntityState.Modified;
                        await db.SaveChangesAsync();
                    }
                    responce.Success        = true;
                    responce.ResponeContent = true;
                }
                return(Ok(responce));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
 public LowService()
 {
     SSCEntities = new SSCEntities();
 }
 public ComplaintService()
 {
     SSCEntities = new SSCEntities();
 }
 public SpeciesService()
 {
     SSCEntities = new SSCEntities();
 }
        public async Task <Responce <ComplaintsDTO> > SaveComplaint(HttpRequest complaintRequest, string UserName)
        {
            Responce <ComplaintsDTO> Responce = new Responce <ComplaintsDTO>();

            Responce.Success = true;
            try
            {
                using (SSCEntities = new SSCEntities())
                {
                    Complaints complaints = new Complaints();
                    int        Id         = Convert.ToInt32(complaintRequest.Form["Id"]);
                    var        Cityid     = Convert.ToInt32(complaintRequest.Form["Cityid"]);
                    var        SpeciesId  = Convert.ToInt32(complaintRequest.Form["SpeciesId"]);
                    complaints.City = Cityid;

                    complaints.Id = Id;
                    if (complaints.Id != 0)
                    {
                        complaints = SSCEntities.Complaints.Find(Id);
                        var ComplaintLows   = complaints.ComplaintsLows;
                        var ComplaintImages = complaints.ComplaintImages;
                        SSCEntities.ComplaintsLows.RemoveRange(ComplaintLows);
                        SSCEntities.ComplaintImages.RemoveRange(ComplaintImages);
                        await SSCEntities.SaveChangesAsync();
                    }

                    complaints.SpeciesId        = SpeciesId;
                    complaints.ShopName         = Convert.ToString(complaintRequest.Form["ShopName"]);
                    complaints.ShopAddress      = Convert.ToString(complaintRequest.Form["ShopAddress"]);
                    complaints.DateOfInspection = Convert.ToDateTime(complaintRequest.Form["DateOfInspection"]);
                    complaints.Comments         = Convert.ToString(complaintRequest.Form["Comments"]);
                    complaints.Violations       = Convert.ToString(complaintRequest.Form["Violations"]);
                    complaints.GpsLocations     = Convert.ToString(complaintRequest.Form["GpsLocations"]);
                    complaints.UserId           = Convert.ToString(complaintRequest.Form["UserId"]);
                    complaints.ComplainStatus   = Convert.ToInt32(complaintRequest.Form["ComplainStatus"]);
                    complaints.GroupName        = Convert.ToString(complaintRequest.Form["GroupName"]);
                    complaints.IsDelete         = Convert.ToBoolean(complaintRequest.Form["IsDelete"]);
                    complaints.IsActive         = Convert.ToBoolean(complaintRequest.Form["IsActive"]);


                    complaints.ModifiedBy = UserName ?? Convert.ToString(complaintRequest.Form["UserId"]);

                    complaints.ModifiedDate        = DateTime.UtcNow;
                    complaints.IsRejecet           = Convert.ToBoolean(complaintRequest.Form["IsRejecet"]);
                    complaints.CommentForRejection = Convert.ToString(complaintRequest.Form["CommentForRejection"]);
                    complaints.RegistrationDate    = Convert.ToDateTime(complaintRequest.Form["RegistrationDate"]);
                    complaints.IsRegister          = Convert.ToBoolean(complaintRequest.Form["IsRegister"]);
                    complaints.IsEmailSend         = Convert.ToBoolean(complaintRequest.Form["IsEmailSend"]);
                    if (complaints.Id != 0)
                    {
                        SSCEntities.Entry(complaints).State = EntityState.Modified;
                    }
                    else
                    {
                        complaints.CreatedBy   = UserName ?? Convert.ToString(complaintRequest.Form["UserId"]);
                        complaints.CreatedDate = DateTime.UtcNow;
                        SSCEntities.Complaints.Add(complaints);
                    }
                    await SSCEntities.SaveChangesAsync();

                    var LowsIds = Convert.ToString(complaintRequest.Form["LowIds"]).Split(',');

                    if (LowsIds.Count() > 0)
                    {
                        foreach (var item in LowsIds)
                        {
                            ComplaintsLows complaintsLows = new ComplaintsLows();
                            complaintsLows.LowId       = Convert.ToInt32(item);
                            complaintsLows.ComplaintId = complaints.Id;
                            SSCEntities.ComplaintsLows.Add(complaintsLows);
                            await SSCEntities.SaveChangesAsync();
                        }
                    }

                    if (complaintRequest.Files != null)
                    {
                        if (complaintRequest.Files.Count > 0)
                        {
                            for (int i = 0; i < complaintRequest.Files.Count; i++)
                            {
                                if (complaintRequest.Files[i].ContentLength > 0)
                                {
                                    ComplaintImages complaintsImages = new ComplaintImages();
                                    string          extension        = Path.GetExtension(complaintRequest.Files[i].FileName);
                                    bool            isImage          = Functions.IsImage(complaintRequest.Files[i].FileName);
                                    string          ContentType      = complaintRequest.Files[i].ContentType;
                                    string[]        bloburi          = AzureStore.UploadFile(complaintRequest.Files[i].InputStream, complaintRequest.Files[i].FileName, ContentType, isImage, extension);
                                    complaintsImages.ComplaintId  = complaints.Id;
                                    complaintsImages.Imagetype    = extension;
                                    complaintsImages.ImageUrl     = bloburi[0];
                                    complaintsImages.CreatedDate  = DateTime.UtcNow;
                                    complaintsImages.ModifiedDate = DateTime.UtcNow;
                                    complaintsImages.CreatedBy    = UserName;
                                    complaintsImages.ModifiedBy   = UserName;
                                    SSCEntities.ComplaintImages.Add(complaintsImages);
                                    await SSCEntities.SaveChangesAsync();
                                }
                            }



                            //foreach (string item in complaintRequest.Files)
                            //{
                            //    var postedFile = complaintRequest.Files[item];
                            //    if (!string.IsNullOrEmpty(postedFile.FileName))
                            //    {
                            //        ComplaintImages complaintsImages = new ComplaintImages();

                            //        string extension = Path.GetExtension(postedFile.FileName);

                            //    }
                            //    i = i + 1;
                            //}
                        }
                    }
                    ComplaintsDTO complaintsdto    = new ComplaintsDTO();
                    SSCEntities   db               = new SSCEntities();
                    var           saveComplaintobj = db.Complaints.Find(complaints.Id);
                    complaintsdto           = saveComplaintobj.MapComplaintsToDTO();
                    Responce.ResponeContent = complaintsdto;
                }
            }
            catch (Exception ex)
            {
                Responce.Success = false;
                Responce.Message = $"ERROR SaveComplaint :{ex.ToString()}";
            }
            return(Responce);
        }
        public ActionResult SendEmail(int Id)
        {
            SSCEntities = new SSCEntities();
            var complaints = SSCEntities.Complaints.Find(Id);

            if (complaints != null)
            {
                WebClient client       = new WebClient();
                string    EmailBodyURL = Url.Action("ComplaintEmail", "Home", new { Id = Id });
                EmailBodyURL = new Uri(Request.Url, Url.Content("~/" + EmailBodyURL)).ToString();
                string EmailBody    = client.DownloadString(EmailBodyURL);
                string EmailSubject = $"Immediate action required against illegal meat shops in {complaints.ShopAddress}";
                //string ToAddress = "*****@*****.**";
                string      ToAddress   = "*****@*****.**";
                string      FromAddress = "*****@*****.**";
                string      CCAddress   = "";
                string      smtp        = ConfigurationManager.AppSettings["smtp"].ToString();
                string      smtplogin   = ConfigurationManager.AppSettings["smtplogin"].ToString();
                string      smtppwd     = ConfigurationManager.AppSettings["smtppwd"].ToString();
                int         port        = Convert.ToInt16(ConfigurationManager.AppSettings["smtpport"].ToString());
                MailMessage mail        = new MailMessage();
                mail.IsBodyHtml = true;
                mail.From       = new MailAddress(FromAddress);
                foreach (string address in ToAddress.Split(';'))
                {
                    mail.To.Add(address);
                }
                if (CCAddress != "")
                {
                    foreach (string address in CCAddress.Split(';'))
                    {
                        mail.CC.Add(address);
                    }
                }
                mail.Subject  = EmailSubject;
                mail.Body     = EmailBody;
                mail.Priority = MailPriority.High;
                try
                {
                    int cnt = 1;
                    foreach (var item in complaints.ComplaintImages)
                    {
                        WebRequest  req         = WebRequest.Create(item.ImageUrl);
                        string      Contanttype = ".jpg";
                        string      Extension   = common.GetMimeType(Contanttype);
                        WebResponse response    = req.GetResponse();
                        Stream      stream      = response.GetResponseStream();
                        mail.Attachments.Add(new Attachment(stream, "File" + cnt + Contanttype, Extension));
                        cnt++;
                    }
                }
#pragma warning disable CS0168 // The variable 'ex' is declared but never used
                catch (Exception ex)
#pragma warning restore CS0168 // The variable 'ex' is declared but never used
                {
                }
                SmtpClient Smtpclient = new SmtpClient(smtp, port);
                Smtpclient.UseDefaultCredentials = false;
                Smtpclient.Credentials           = new System.Net.NetworkCredential(smtplogin, smtppwd);
                Smtpclient.DeliveryMethod        = SmtpDeliveryMethod.Network;
                Smtpclient.Send(mail);
                return(RedirectToAction("ComplaintEmail", new { Id = complaints.Id }));
            }
            return(RedirectToAction("Error", "Home"));
        }