Пример #1
0
        public IActionResult _Detail(string id, string actionType)
        {
            IssueVM    issueVM    = new IssueVM();
            IssueModel issueModel = new IssueModel();

            if (actionType.ToLower().Equals("insert"))
            {
                // Insert
                issueVM.actionType      = "insert";
                issueVM.listIssStatus   = menuDAL.GetAllIssStatus().ToList();
                issueVM.listClauseIssue = clauseIssueDAL.GetAllClauseIssue().ToList();
                issueVM.listClause      = clauseDAL.GetAllClause().ToList();
                //GetAllClause
            }
            else
            {
                // Update
                //clauseVM.actionType = "Update";
                //clauseVM.clauseModel = clauseDAL.GetClauseById(id);
                //clauseVM.listDocument = documentDAL.GetAllDocuments();
                //clauseVM.listVersion = menuDAL.GetAllVersion();
                //clauseModel = clauseDAL.GetDocumentByID(id);
                ////documentVM.listDocument = documentDAL.GetAllDocuments().ToList();
                //documentVM.listDocType = menuDAL.GetAllDocType();
                //documentVM.listVersion = menuDAL.GetAllVersion();
                //documentVM.listDocStatus = menuDAL.GetAllDocStatus();
                //documentVM.documentModel = document;
                issueVM.actionType      = "update";
                issueVM.issModel        = issueDAL.GetIssueByID(id);
                issueVM.listIssStatus   = menuDAL.GetAllIssStatus().ToList();
                issueVM.listClauseIssue = clauseIssueDAL.GetAllClauseIssue().ToList();
                issueVM.listClause      = clauseDAL.GetAllClause().ToList();
            }
            return(PartialView("_Detail", issueVM));
        }
Пример #2
0
        public async Task <ActionResult> FinishJob(IssueVM model)
        {
            try
            {
                var issueRepo = new IssueRepo();
                var issue     = issueRepo.GetById(model.IssueId);
                if (issue == null)
                {
                    TempData["Message2"] = "Arıza kaydı bulunamadi.";
                    return(RedirectToAction("Index", "Technician"));
                }

                issue.IssueState = IssueStates.Tamamlandı;
                issue.ClosedDate = DateTime.Now;
                issueRepo.Update(issue);
                TempData["Message"] = $"{issue.Description} adlı iş tamamlandı.";

                var survey     = new Survey();
                var surveyRepo = new SurveyRepo();
                surveyRepo.Insert(survey);
                issue.SurveyId = survey.Id;
                issueRepo.Update(issue);

                var user = await NewUserStore().FindByIdAsync(issue.CustomerId);

                var usernamesurname = GetNameSurname(issue.CustomerId);

                string siteUrl = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host +
                                 (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port);

                var emailService = new EmailService();
                var body         = $"Merhaba <b>{usernamesurname}</b><br>{issue.Description} adlı arıza kaydınız kapanmıştır.<br>Değerlendirmeniz için aşağıda linki bulunan anketi doldurmanızı rica ederiz.<br> <a href='{siteUrl}/issue/survey?code={issue.SurveyId}' >Anket Linki </a> ";
                await emailService.SendAsync(new IdentityMessage()
                {
                    Body = body, Subject = "Değerlendirme Anketi"
                }, user.Email);

                var issueLog = new IssueLog()
                {
                    IssueId     = issue.Id,
                    Description = "İş tamamlandı.",
                    FromWhom    = "Teknisyen"
                };
                new IssueLogRepo().Insert(issueLog);

                return(RedirectToAction("Index", "Technician"));
            }
            catch (Exception ex)
            {
                TempData["Message"] = new ErrorVM()
                {
                    Text           = $"Bir hata oluştu. {ex.Message}",
                    ActionName     = "FinishJob",
                    ControllerName = "Technician",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error500", "Home"));
            }
        }
        public async Task <ActionResult> AssignTechAsync(IssueVM model)
        {
            try
            {
                var issue = new IssueRepo().GetById(model.IssueId);
                issue.TechnicianId = model.TechnicianId;
                issue.IssueState   = Models.Enums.IssueStates.Atandı;
                issue.OptReport    = model.OptReport;
                new IssueRepo().Update(issue);
                var technician = await NewUserStore().FindByIdAsync(issue.TechnicianId);

                TempData["Message"] =
                    $"{issue.Description} adlı arızaya {technician.Name}  {technician.Surname} teknisyeni atandı.";

                var customer     = NewUserManager().FindById(issue.CustomerId);
                var emailService = new EmailService();
                var body         = $"Merhaba <b>{GetNameSurname(issue.CustomerId)}</b><br>{issue.Description} adlı arızanız onaylanmıştır ve görevli teknisyen en kısa sürede yola çıkacaktır.";
                await emailService.SendAsync(new IdentityMessage()
                {
                    Body    = body,
                    Subject = $"{issue.Description} adlı arıza hk."
                }, customer.Email);

                var issueLog = new IssueLog()
                {
                    IssueId     = issue.Id,
                    Description = "Teknisyene atandı.",
                    FromWhom    = "Operatör"
                };
                new IssueLogRepo().Insert(issueLog);

                return(RedirectToAction("AllIssues", "Operator"));
            }
            catch (DbEntityValidationException ex)
            {
                TempData["Message"] = new ErrorVM()
                {
                    Text           = $"Bir hata oluştu: {EntityHelpers.ValidationMessage(ex)}",
                    ActionName     = "AssignTechAsync",
                    ControllerName = "Operator",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error500", "Home"));
            }
            catch (Exception ex)
            {
                TempData["Message"] = new ErrorVM()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "AssignTechAsync",
                    ControllerName = "Operator",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error500", "Home"));
            }
        }
Пример #4
0
        private List <IssueVM> GetRecentIssues()
        {
            var listIssues = new List <IssueVM>();

            var issueList = repo.GetIssues(TeamID).OrderByDescending(s => s.ID).Take(5);

            foreach (var issue in issueList)
            {
                var issueVM = new IssueVM {
                    Id = issue.ID, Title = issue.Title
                };
                listIssues.Add(issueVM);
            }
            return(listIssues);
        }
Пример #5
0
        // GET: /<controller>/
        //[Authorize]
        public IActionResult Index(int?page)
        {
            IssueVM issueVM    = new IssueVM();
            int     pageSize   = 10;
            int     pageNumber = page ?? 1;
            int     totalCount;

            //clauseDAL.GetAllClause(out totalCount).ToPagedList(pageNumber, pageSize);
            issueVM.listIssue      = issueDAL.GetAllIssue(out totalCount).ToPagedList(pageNumber, pageSize);
            issueVM.PagingMetaData = new StaticPagedList <IssueModel>(issueVM.listIssue, pageNumber + 1, pageSize, totalCount).GetMetaData();

            //issueVM.listIssStatus = menuDAL.GetAllIssStatusTest().ToList();

            return(View(issueVM));
        }
Пример #6
0
        public async Task <ActionResult> AssignTech(IssueVM model)
        {
            try
            {
                var issue = _issueRepo.GetById(model.IssueId);
                issue.TechnicianId = model.TechnicianId;
                issue.IssueState   = IssueStates.Atandı;
                issue.OptReport    = model.OptReport;
                _issueRepo.Update(issue);
                var technician = await _membershipTools.NewUserStore().FindByIdAsync(issue.TechnicianId);

                TempData["Message"] =
                    $"{issue.Description} adlı arızaya {technician.Name}  {technician.Surname} teknisyeni atandı.";

                var customer = await _membershipTools.UserManager.FindByIdAsync(issue.CustomerId);

                var emailService = new EmailService();
                var body         = $"Merhaba <b>{await _membershipTools.GetNameSurname(issue.CustomerId)}</b><br>{issue.Description} adlı arızanız onaylanmıştır ve görevli teknisyen en kısa sürede yola çıkacaktır.";
                await emailService.SendAsync(new EmailModel()
                {
                    Body    = body,
                    Subject = $"{issue.Description} adlı arıza hk."
                }, customer.Email);

                var issueLog = new IssueLog()
                {
                    IssueId     = issue.Id,
                    Description = "Teknisyene atandı.",
                    FromWhom    = "Operatör"
                };
                _issueLogRepo.Insert(issueLog);

                return(RedirectToAction("AllIssues", "Operator"));
            }
            catch (Exception ex)
            {
                var errorVM = new ErrorVM()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "AssignTechAsync",
                    ControllerName = "Operator",
                    ErrorCode      = "500"
                };
                TempData["ErrorMessage"] = JsonConvert.SerializeObject(errorVM);
                return(RedirectToAction("Error500", "Home"));
            }
        }
Пример #7
0
        private List <IssueVM> GetIssuesAssignedToMe()
        {
            //Gets the issues assigned to the current user
            var listIssues = new List <IssueVM>();

            var issueList = repo.GetIssues(TeamID).Where(s => s.IssueMembers.Any(f => f.MemberID == UserID))
                            .OrderByDescending(x => x.ID).Take(5);

            foreach (var issue in issueList)
            {
                var issueVM = new IssueVM {
                    Id = issue.ID, Title = issue.Title
                };
                listIssues.Add(issueVM);
            }
            return(listIssues);
        }
Пример #8
0
 private IssueModel VmToModel(IssueVM vm)
 {
     return(new IssueModel
     {
         LocationId = vm.LocationId,
         Id = vm.Id,
         Title = vm.Title,
         Description = vm.Description,
         Longitude = vm.Longitude,
         Latitude = vm.Latitude,
         Severity = vm.Severity,
         Status = vm.Status,
         Created = vm.Created,
         Edited = vm.Edited,
         CreatedBy = vm.CreatedBy
     });
 }
Пример #9
0
        public HttpResponseMessage UpdateIssue(IssueVM vm)
        {
            ApiResult result;

            try
            {
                var model = VmToModel(vm);

                _issueRepository.Update(model, User.Identity.Name);
                result = ApiResult.Success;
            }
            catch (LocationNotFoundException)
            {
                result = ApiResult.LocationNotFound;
            }
            catch (UserNotFoundException)
            {
                result = ApiResult.UserNotFound;
            }
            catch (UnauthorizedAccessException)
            {
                return(new HttpResponseMessage(HttpStatusCode.Unauthorized));
            }
            catch (IssueNotFoundException)
            {
                result = ApiResult.IssueNotFound;
            }
            catch (InvalidIssueSeverityException)
            {
                result = ApiResult.InvalidIssueSeverity;
            }
            catch (InvalidIssueStatusException)
            {
                result = ApiResult.InvalidIssueStatus;
            }
            catch (Exception)
            {
                return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, new ApiResponse {
                Result = result
            }));
        }
Пример #10
0
        public List <IssueVM> GetAllIssue()
        {
            List <IssueVM> listIssueVM = new List <IssueVM>();

            try
            {
                using (MySqlConnection con = new MySqlConnection(connectionString))
                {
                    MySqlCommand cmd = new MySqlCommand("sp_GetAllIssue", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    con.Open();
                    MySqlDataReader rdr = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        IssueVM issue = new IssueVM();
                        issue.issModel = new IssueModel();
                        int tt = Convert.ToInt32(rdr["issue_ID"]);
                        issue.issModel.IssueID    = Convert.ToInt32(rdr["issue_ID"]);
                        issue.issModel.IssueIDOld = String.IsNullOrEmpty(rdr["issue_ID_old"].ToString()) ? "" : rdr["issue_ID_old"].ToString();
                        //issue.issModel.IssueStatusID = Convert.ToInt32(String.IsNullOrEmpty(rdr["issue_status_ID"].ToString()) ? 0 : rdr["issue_status_ID"].ToString());
                        issue.IssueStatusName           = String.IsNullOrEmpty(rdr["issue_status_name"].ToString()) ? "" : rdr["issue_status_name"].ToString();
                        issue.issModel.IssueContent     = String.IsNullOrEmpty(rdr["issue_content"].ToString()) ? "" : rdr["issue_content"].ToString();
                        issue.issModel.EmailSender      = String.IsNullOrEmpty(rdr["email_sender"].ToString()) ? "" : rdr["email_sender"].ToString();
                        issue.issModel.EmailProcessorer = String.IsNullOrEmpty(rdr["email_processorer"].ToString()) ? "" : rdr["email_processorer"].ToString();
                        issue.issModel.NextStep         = String.IsNullOrEmpty(rdr["next_step"].ToString()) ? "" : rdr["next_step"].ToString();
                        issue.issModel.CreatedBy        = (rdr["creator_ID"].ToString());
                        issue.CreatorName        = String.IsNullOrEmpty(rdr["creator_name"].ToString()) ? "" : rdr["creator_name"].ToString();
                        issue.issModel.CreatedAt = String.IsNullOrEmpty(rdr["created_at"].ToString()) ? "" : rdr["created_at"].ToString();
                        issue.issModel.UpdatedAt = String.IsNullOrEmpty(rdr["updated_at"].ToString()) ? "" : rdr["updated_at"].ToString();
                        issue.issModel.UpdatedBy = (String.IsNullOrEmpty(rdr["updated_by"].ToString()) ? "" : rdr["updated_by"].ToString());
                        issue.UpdatedName        = String.IsNullOrEmpty(rdr["updated_name"].ToString()) ? "" : rdr["updated_name"].ToString();
                        listIssueVM.Add(issue);
                    }
                    con.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("ex:" + ex);
            }
            return(listIssueVM);
        }
Пример #11
0
        public ActionResult UpdateJob(IssueVM model)
        {
            try
            {
                var repo  = _issueRepo;
                var issue = repo.GetById(model.IssueId);
                if (issue == null)
                {
                    TempData["Message2"] = "Arıza kaydı bulunamadi.";
                    return(RedirectToAction("Index", "Technician"));
                }

                issue.TechReport     = model.TechReport;
                issue.ServiceCharge += model.ServiceCharge;
                issue.UpdatedDate    = DateTime.Now;
                repo.Update(issue);

                var issueLog = new IssueLog()
                {
                    IssueId     = issue.Id,
                    Description = $"Güncelleme: {issue.TechReport}",
                    FromWhom    = "Teknisyen"
                };
                _issueLogRepo.Insert(issueLog);

                return(RedirectToAction("Index", "Technician"));
            }
            catch (Exception ex)
            {
                var errorVM = new ErrorVM()
                {
                    Text           = $"Bir hata oluştu. {ex.Message}",
                    ActionName     = "UpdateJob",
                    ControllerName = "Technician",
                    ErrorCode      = "500"
                };
                TempData["ErrorMessage"] = JsonConvert.SerializeObject(errorVM);
                return(RedirectToAction("Error500", "Home"));
            }
        }
Пример #12
0
        public async Task <ActionResult> FinishJob(IssueVM model)
        {
            try
            {
                var issueRepo = _issueRepo;
                var issue     = issueRepo.GetById(model.IssueId);
                if (issue == null)
                {
                    TempData["Message2"] = "Arıza kaydı bulunamadi.";
                    return(RedirectToAction("Index", "Technician"));
                }

                issue.IssueState = IssueStates.Tamamlandı;
                issue.ClosedDate = DateTime.Now;
                issueRepo.Update(issue);
                TempData["Message"] = $"{issue.Description} adlı iş tamamlandı.";

                var survey     = new Survey();
                var surveyRepo = _surveyRepo;
                surveyRepo.Insert(survey);
                issue.SurveyId = survey.Id;
                issueRepo.Update(issue);

                var user = await _membershipTools.NewUserStore().FindByIdAsync(issue.CustomerId);

                var usernamesurname = await _membershipTools.GetNameSurname(issue.CustomerId);

                var uri = new UriBuilder()
                {
                    Scheme = Uri.UriSchemeHttps
                };
                var    hostComponents = Request.Host.ToUriComponent();
                string SiteUrl        = uri.Scheme + System.Uri.SchemeDelimiter + hostComponents;

                var emailService = new EmailService();
                var body         = $"Merhaba <b>{usernamesurname}</b><br>{issue.Description} adlı arıza kaydınız kapanmıştır.<br>Değerlendirmeniz için aşağıda linki bulunan anketi doldurmanızı rica ederiz.<br> <a href='{SiteUrl}/issue/survey?code={issue.SurveyId}' >Anket Linki </a> ";
                await emailService.SendAsync(new EmailModel()
                {
                    Body = body, Subject = "Değerlendirme Anketi"
                }, user.Email);

                var issueLog = new IssueLog()
                {
                    IssueId     = issue.Id,
                    Description = "İş tamamlandı.",
                    FromWhom    = "Teknisyen"
                };
                _issueLogRepo.Insert(issueLog);

                return(RedirectToAction("Index", "Technician"));
            }
            catch (Exception ex)
            {
                var errorVM = new ErrorVM()
                {
                    Text           = $"Bir hata oluştu. {ex.Message}",
                    ActionName     = "FinishJob",
                    ControllerName = "Technician",
                    ErrorCode      = "500"
                };
                TempData["ErrorMessage"] = JsonConvert.SerializeObject(errorVM);
                return(RedirectToAction("Error500", "Home"));
            }
        }
        public async Task <ActionResult> Create(IssueVM model)
        {
            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("", "Hata Oluştu.");
                return(RedirectToAction("Create", "Issue", model));
            }
            try
            {
                var id    = HttpContext.GetOwinContext().Authentication.User.Identity.GetUserId();
                var user  = NewUserManager().FindById(id);
                var issue = new Issue()
                {
                    Description   = model.Description,
                    IssueState    = model.IssueState,
                    Location      = model.Location == Models.Enums.Locations.KonumYok ? user.Location : model.Location,
                    ProductType   = model.ProductType,
                    CustomerId    = model.CustomerId,
                    PurchasedDate = model.PurchasedDate,
                    PhotoPath     = model.PhotoPath,
                    ServiceCharge = model.ServiceCharge,
                    ClosedDate    = model.ClosedDate,
                    CreatedDate   = model.CreatedDate,
                    OperatorId    = model.OperatorId,
                    TechReport    = model.TechReport
                };
                switch (issue.ProductType)
                {
                case Models.Enums.ProductTypes.Buzdolabı:
                    if (issue.PurchasedDate.AddYears(1) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                case Models.Enums.ProductTypes.BulaşıkMakinesi:
                    if (issue.PurchasedDate.AddYears(2) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                case Models.Enums.ProductTypes.Fırın:
                    if (issue.PurchasedDate.AddYears(3) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                case Models.Enums.ProductTypes.ÇamaşırMakinesi:
                    if (issue.PurchasedDate.AddYears(4) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                case Models.Enums.ProductTypes.Mikrodalga:
                    if (issue.PurchasedDate.AddYears(5) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                default:
                    if (issue.PurchasedDate.AddYears(2) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;
                }
                if (issue.WarrantyState)
                {
                    issue.ServiceCharge = 0;
                }

                var repo = new IssueRepo();
                repo.Insert(issue);
                var fotorepo = new PhotographRepo();
                if (model.PostedPhoto.Count > 0)
                {
                    model.PostedPhoto.ForEach(file =>
                    {
                        if (file == null || file.ContentLength <= 0)
                        {
                            var filepath2 = Server.MapPath("~/assets/images/image-not-available.png");

                            var img2 = new WebImage(filepath2);
                            img2.Resize(250, 250, false);
                            img2.Save(filepath2);

                            fotorepo.Insert(new Photograph()
                            {
                                IssueId = issue.Id,
                                Path    = "/assets/images/image-not-available.png"
                            });

                            return;
                        }

                        var fileName      = Path.GetFileNameWithoutExtension(file.FileName);
                        var extName       = Path.GetExtension(file.FileName);
                        fileName          = StringHelpers.UrlFormatConverter(fileName);
                        fileName         += StringHelpers.GetCode();
                        var directorypath = Server.MapPath("~/Upload/");
                        var filepath      = Server.MapPath("~/Upload/") + fileName + extName;

                        if (!Directory.Exists(directorypath))
                        {
                            Directory.CreateDirectory(directorypath);
                        }

                        file.SaveAs(filepath);

                        var img = new WebImage(filepath);
                        img.Resize(250, 250, false);
                        img.Save(filepath);

                        fotorepo.Insert(new Photograph()
                        {
                            IssueId = issue.Id,
                            Path    = "/Upload/" + fileName + extName
                        });
                    });
                }

                var fotograflar = fotorepo.GetAll(x => x.IssueId == issue.Id).ToList();
                var foto        = fotograflar.Select(x => x.Path).ToList();
                issue.PhotoPath = foto;
                repo.Update(issue);

                TempData["Message"] = "Arıza kaydınız başarı ile oluşturuldu.";

                var emailService = new EmailService();

                var body = $"Merhaba <b>{user.Name} {user.Surname}</b><br>Arıza kaydınız başarıyla oluşturuldu.Birimlerimiz sorunu çözmek için en kısa zamanda olay yerine intikal edecektir.<br><br> Ayrıntılı bilgi için telefon numaramız:<i>0212 684 75 33</i>";

                await emailService.SendAsync(new IdentityMessage()
                {
                    Body    = body,
                    Subject = "Arıza kaydı oluşturuldu."
                }, user.Email);

                var issueLog = new IssueLog()
                {
                    IssueId     = issue.Id,
                    Description = "Arıza Kaydı Oluşturuldu.",
                    FromWhom    = "Müşteri"
                };
                new IssueLogRepo().Insert(issueLog);

                return(RedirectToAction("Index", "Issue"));
            }
            catch (DbEntityValidationException ex)
            {
                TempData["Message3"] = new ErrorVM()
                {
                    Text           = $"Bir hata oluştu: {EntityHelpers.ValidationMessage(ex)}",
                    ActionName     = "Create",
                    ControllerName = "Issue",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error500", "Home"));
            }
            catch (Exception ex)
            {
                TempData["Message2"] = new ErrorVM()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "Create",
                    ControllerName = "Issue",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error500", "Home"));
            }
        }
Пример #14
0
        public async Task <ActionResult> Create(IssueVM model)
        {
            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("", "Hata Oluştu.");
                return(RedirectToAction("Create", "Issue", model));
            }
            try
            {
                var user = await _membershipTools.UserManager.GetUserAsync(HttpContext.User);

                var issue = new Issue()
                {
                    Description   = model.Description,
                    IssueState    = model.IssueState,
                    Latitude      = model.Latitude,
                    Longitude     = model.Longitude,
                    ProductType   = model.ProductType,
                    CustomerId    = model.CustomerId,
                    PurchasedDate = model.PurchasedDate,
                    PhotoPath     = model.PhotoPath,
                    ServiceCharge = model.ServiceCharge,
                    ClosedDate    = model.ClosedDate,
                    CreatedDate   = model.CreatedDate,
                    OperatorId    = model.OperatorId,
                    TechReport    = model.TechReport
                };
                switch (issue.ProductType)
                {
                case ProductTypes.Buzdolabı:
                    if (issue.PurchasedDate.AddYears(1) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                case ProductTypes.BulaşıkMakinesi:
                    if (issue.PurchasedDate.AddYears(2) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                case ProductTypes.Fırın:
                    if (issue.PurchasedDate.AddYears(3) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                case ProductTypes.ÇamaşırMakinesi:
                    if (issue.PurchasedDate.AddYears(4) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                case ProductTypes.Mikrodalga:
                    if (issue.PurchasedDate.AddYears(5) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;

                default:
                    if (issue.PurchasedDate.AddYears(2) > DateTime.Now)
                    {
                        issue.WarrantyState = true;
                    }
                    break;
                }
                if (issue.WarrantyState)
                {
                    issue.ServiceCharge = 0;
                }

                var repo = _issueRepo;
                repo.Insert(issue);
                var fotorepo = _photographRepo;
                if (model.PostedPhoto.Count > 0)
                {
                    model.PostedPhoto.ForEach(async file =>
                    {
                        if (file == null || file.Length <= 0)
                        {
                            var filepath2 = Path.Combine("/assets/images/image-not-available.png");

                            using (var fileStream = new FileStream(filepath2, FileMode.Create))
                            {
                                await file.CopyToAsync(fileStream);
                            }
                            fotorepo.Insert(new Photograph()
                            {
                                IssueId = issue.Id,
                                Path    = "/assets/images/image-not-available.png"
                            });

                            return;
                        }

                        var fileName      = Path.GetFileNameWithoutExtension(file.FileName);
                        var extName       = Path.GetExtension(file.FileName);
                        fileName          = StringHelpers.UrlFormatConverter(fileName);
                        fileName         += StringHelpers.GetCode();
                        var webpath       = _hostingEnvironment.WebRootPath;
                        var directorypath = Path.Combine(webpath, "Uploads");
                        var filePath      = Path.Combine(directorypath, fileName + extName);

                        if (!Directory.Exists(directorypath))
                        {
                            Directory.CreateDirectory(directorypath);
                        }

                        using (var fileStream = new FileStream(filePath, FileMode.Create))
                        {
                            file.CopyTo(fileStream);
                        }
                        fotorepo.Insert(new Photograph()
                        {
                            IssueId = issue.Id,
                            Path    = "/Uploads/" + fileName + extName
                        });
                    });
                }

                var fotograflar = fotorepo.GetAll(x => x.IssueId == issue.Id).ToList();
                var foto        = fotograflar.Select(x => x.Path).ToList();
                issue.PhotoPath = foto;
                repo.Update(issue);

                TempData["Message"] = "Arıza kaydınız başarı ile oluşturuldu.";

                var emailService = new EmailService();

                var body = $"Merhaba <b>{user.Name} {user.Surname}</b><br>Arıza kaydınız başarıyla oluşturuldu.Birimlerimiz sorunu çözmek için en kısa zamanda olay yerine intikal edecektir.<br><br> Ayrıntılı bilgi için telefon numaramız:<i>0212 684 75 33</i>";

                await emailService.SendAsync(new EmailModel()
                {
                    Body    = body,
                    Subject = "Arıza kaydı oluşturuldu."
                }, user.Email);

                var issueLog = new IssueLog()
                {
                    IssueId     = issue.Id,
                    Description = "Arıza Kaydı Oluşturuldu.",
                    FromWhom    = "Müşteri"
                };
                _issuelogRepo.Insert(issueLog);

                return(RedirectToAction("Index", "Issue"));
            }
            catch (Exception ex)
            {
                var errorVM = new ErrorVM()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "Create",
                    ControllerName = "Issue",
                    ErrorCode      = "500"
                };
                TempData["ErrorMessage"] = JsonConvert.SerializeObject(errorVM);
                return(RedirectToAction("Error500", "Home"));
            }
        }