public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var generatedRefrence = _uow.GeneratedReferences.Find(id.Value);
            var model             = new GenerateRefrenceModel()
            {
                EditDepartmentId     = generatedRefrence.DepartmentId,
                GeneratedCodeAr      = generatedRefrence.GeneratedCodeAr,
                GeneratedCodeEn      = generatedRefrence.GeneratedCodeEn,
                GeneratedReferenceId = generatedRefrence.GeneratedReferenceId
            };

            _uow.AutitTrails.Add(new AuditTrial()
            {
                UserId         = SessionManager.CurrentUser.UserId,
                EventTypeId    = 4,
                EventTime      = DateTime.Now,
                EventDetails   = "Visited Reassign Generate Reference Modal",
                EventDetailsAr = "قام بزيارة صفحة الغاء تعيين مرجع"
            });
            _uow.Save();
            return(PartialView("_Edit", model));
        }
 public ActionResult Edit(GenerateRefrenceModel model)
 {
     if (ModelState.IsValid)
     {
         var generatedRefrence   = _uow.GeneratedReferences.Find(model.GeneratedReferenceId);
         var departmentShortCode = _uow.Departments.Find(model.EditDepartmentId);
         var ci = new CultureInfo("ar-EG");
         if (generatedRefrence.CorrespondentId == 1)
         {
             var oldReferenceEn = generatedRefrence.GeneratedCodeEn.Split(new char[] { '/', '-' },
                                                                          StringSplitOptions.RemoveEmptyEntries);
             var generatedCodedEn = new StringBuilder();
             generatedCodedEn.Append(oldReferenceEn[0]).Append("/").Append("R-").Append(oldReferenceEn[2]).Append("/").Append(departmentShortCode.ShortcutEn).Append("/").Append(oldReferenceEn[4]);
             var oldReferenceAr = generatedRefrence.GeneratedCodeAr.Split(new Char[] { '/', '-' },
                                                                          StringSplitOptions.RemoveEmptyEntries);
             var generatedCodedAr = new StringBuilder();
             generatedCodedAr.Append(oldReferenceAr[0]).Append("/").Append("و-").Append(CultureHelper.ConvertToEasternArabicNumerals(int.Parse(oldReferenceEn[2]).ToString("0000", ci))).Append("/").Append(departmentShortCode.ShortcutAr).Append("/").Append(CultureHelper.ConvertToEasternArabicNumerals(int.Parse(oldReferenceEn[4]).ToString("00", ci)));
             generatedRefrence.GeneratedCodeEn = generatedCodedEn.ToString();
             generatedRefrence.GeneratedCodeAr = generatedCodedAr.ToString();
             generatedRefrence.DepartmentId    = model.EditDepartmentId;
             generatedRefrence.IsAssigned      = true;
             _uow.AutitTrails.Add(new AuditTrial()
             {
                 UserId       = SessionManager.CurrentUser.UserId,
                 EventTypeId  = 12,
                 EventTime    = DateTime.Now,
                 ReferenceId  = model.GeneratedReferenceId,
                 EventDetails = "this reference " + '"' + model.GeneratedCodeEn + '"' + "has been reassigned with new Department,it's now this one" + '"' + generatedCodedEn.ToString() + '"'
             });
             _uow.GeneratedReferences.Edit(generatedRefrence.GeneratedReferenceId, generatedRefrence);
             _uow.Save();
             return(Json(new { success = true, type = 1, Encode = generatedCodedEn.ToString(), ArCode = generatedCodedAr.ToString(), depid = model.EditDepartmentId }));
         }
         else
         {
             var oldReferenceEn   = generatedRefrence.GeneratedCodeEn.Split('/');
             var generatedCodedEn = new StringBuilder();
             generatedCodedEn.Append(oldReferenceEn[0]).Append("/").Append(oldReferenceEn[1]).Append("/").Append(departmentShortCode.ShortcutEn).Append("/").Append(oldReferenceEn[3]);
             var oldReferenceAr   = generatedRefrence.GeneratedCodeAr.Split('/');
             var generatedCodedAr = new StringBuilder();
             generatedCodedAr.Append(oldReferenceAr[0]).Append("/").Append(CultureHelper.ConvertToEasternArabicNumerals(int.Parse(oldReferenceEn[1]).ToString("0000", ci))).Append("/").Append(departmentShortCode.ShortcutAr).Append("/").Append(CultureHelper.ConvertToEasternArabicNumerals(int.Parse(oldReferenceEn[3]).ToString("00", ci)));
             generatedRefrence.GeneratedCodeEn = generatedCodedEn.ToString();
             generatedRefrence.GeneratedCodeAr = generatedCodedAr.ToString();
             generatedRefrence.DepartmentId    = model.EditDepartmentId;
             generatedRefrence.IsAssigned      = true;
             _uow.AutitTrails.Add(new AuditTrial()
             {
                 UserId       = SessionManager.CurrentUser.UserId,
                 EventTypeId  = 12,
                 EventTime    = DateTime.Now,
                 ReferenceId  = model.GeneratedReferenceId,
                 EventDetails = "this reference " + '"' + model.GeneratedCodeEn + '"' + "has been reassigned with new Department,it's now this one" + '"' + generatedCodedEn.ToString() + '"'
             });
             _uow.GeneratedReferences.Edit(generatedRefrence.GeneratedReferenceId, generatedRefrence);
             _uow.Save();
             return(Json(new { success = true, type = 2, Encode = generatedCodedEn.ToString(), ArCode = generatedCodedAr.ToString(), depid = model.EditDepartmentId }));
         }
     }
     return(Json(new { success = false, message = "There is a wrong in your " }));
 }
        public ActionResult CreateGenerateRefrence(GenerateRefrenceModel model)
        {
            if (!ModelState.IsValid)
            {
                var sd = ModelState.Values;
                return(Json(new { success = false }));
            }
            var generatedCode = GenerateNewRefrence(model.CompanyName, model.CompanyNameAr, model.DepartmentId, model.Incoming);

            model.GeneratedCodeEn = generatedCode.GeneratedCodeEn;
            model.GeneratedCodeAr = generatedCode.GeneratedCodeAr;
            if (generatedCode.IsUnAssignedRef)
            {
                var toDeletedReference = _uow.GeneratedReferences.Find(generatedCode.UnAssignedId);

                var updGenerated = new GeneratedReference
                {
                    CompanyName     = model.CompanyName,
                    CompanyNameAr   = model.CompanyNameAr,
                    DepartmentId    = model.DepartmentId,
                    GeneratedCodeAr = model.GeneratedCodeAr,
                    GeneratedCodeEn = model.GeneratedCodeEn,
                    IsAssigned      = true,
                    CorrespondentId = model.Incoming == "Incoming" ? 1 : 2,
                    CreatedBy       = SessionManager.CurrentUser.UserId,
                    CreatedAt       = DateTime.Now
                };
                updGenerated.AuditTrial.Add(new AuditTrial()
                {
                    EventTypeId    = 12,
                    UserId         = SessionManager.CurrentUser.UserId,
                    EventTime      = DateTime.Now,
                    EventDetails   = "This User Created new reference based on this Unassigned Reference " + toDeletedReference.GeneratedCodeEn,
                    EventDetailsAr = "هذا المستخدم قام بنشاء مرجع جديد بنائاً علي هذا المرجع الملغي تعيينه " + toDeletedReference.GeneratedCodeAr
                });
                _uow.GeneratedReferences.Add(updGenerated);
                toDeletedReference.IsDeleted = true;
                _uow.AutitTrails.Add(new AuditTrial()
                {
                    UserId         = SessionManager.CurrentUser.UserId,
                    ReferenceId    = toDeletedReference.GeneratedReferenceId,
                    EventTypeId    = 13,
                    EventTime      = DateTime.Now,
                    EventDetails   = "This reference has been deleted after you reused this number in new generated reference",
                    EventDetailsAr = "هذا المرجع تم حذفه بعد ما استخدم ترقيمه في مرجع جديد"
                });
                _uow.Save();
                ModelState.Clear();

                return(Json(new { success = true, GeneratedCodeAr = model.GeneratedCodeAr, GeneratedCodeEn = model.GeneratedCodeEn }, JsonRequestBehavior.AllowGet));
            }
            var newGenerated = new GeneratedReference
            {
                CompanyName     = model.CompanyName,
                CompanyNameAr   = model.CompanyNameAr,
                DepartmentId    = model.DepartmentId,
                GeneratedCodeAr = model.GeneratedCodeAr,
                GeneratedCodeEn = model.GeneratedCodeEn,
                IsAssigned      = true,
                CorrespondentId = model.Incoming == "Incoming" ? 1 : 2,
                CreatedBy       = SessionManager.CurrentUser.UserId,
                CreatedAt       = DateTime.Now
            };

            newGenerated.AuditTrial.Add(new AuditTrial()
            {
                EventTypeId    = 10,
                UserId         = SessionManager.CurrentUser.UserId,
                EventTime      = DateTime.Now,
                EventDetails   = "This User Created this new reference",
                EventDetailsAr = "هذا المستخدم قام بانشاء مرجع جديد"
            });
            _uow.GeneratedReferences.Add(newGenerated);
            var    lastnumber = 0;
            string lastYear   = null;

            if (model.Incoming == "Outgoing")
            {
                var generatedCodeSplitting = model.GeneratedCodeEn.Split('/');
                lastnumber = int.Parse(generatedCodeSplitting[1]);
                var refNoCountToUpdate = _uow.RefNoCounts.List().FirstOrDefault(x => x.IsCurrentYearxx == true && x.CorrespondentTypeID == 2);
                if (refNoCountToUpdate != null)
                {
                    refNoCountToUpdate.StartNumber = lastnumber;
                }
            }
            if (model.Incoming == "Incoming")
            {
                var generatedCodeSplitting = model.GeneratedCodeEn.Split(new Char[] { '/', '-' },
                                                                         StringSplitOptions.RemoveEmptyEntries);
                lastnumber = int.Parse(generatedCodeSplitting[2]);
                var refNoCountToUpdate = _uow.RefNoCounts.List().FirstOrDefault(x => x.IsCurrentYearxx == true && x.CorrespondentTypeID == 1);
                if (refNoCountToUpdate != null)
                {
                    refNoCountToUpdate.StartNumber = lastnumber;
                }
            }
            _uow.Save();
            ModelState.Clear();

            return(Json(new { success = true, GeneratedCodeAr = model.GeneratedCodeAr, GeneratedCodeEn = model.GeneratedCodeEn }));
        }