public async Task<ActionResult> Add(TechnicalStaffViewModel technicalStaffModel)
        {
            var canAddTechnicalStaff = await _participationService
                .CanAddTechnicalStaff(technicalStaffModel.ParticipationId, Convert.ToInt32(User.Identity.Name));

            if (!canAddTechnicalStaff)
            {
                ModelState.AddModelError("", "امکان درج کادر فنی جدید وجود ندارد.");
                return this.JsonValidationErrors();
            }

            var tmpPath = Server.MapPath("~/App_Data/tmp/");

            var fullName = string.Format("{0}-{1}", technicalStaffModel.FirstName, technicalStaffModel.LastName).ApplyCorrectYeKe();

            if (technicalStaffModel.Id == 0)
            {

                var userImagePath = Server.MapPath("~/App_Data/TechnicalStaff_Image/");

                await
                    CopyFileAsync(tmpPath + technicalStaffModel.Image,
                        userImagePath + string.Format("{0}-{1}", fullName, technicalStaffModel.Image));

                technicalStaffModel.Image = string.Format("{0}-{1}", fullName, technicalStaffModel.Image);
            }

            var technicalStaff = new DomainClasses.TechnicalStaff
            {
                FirstName = technicalStaffModel.FirstName,
                BirthDate = technicalStaffModel.BirthDate,
                FatherName = technicalStaffModel.FatherName,
                Image = technicalStaffModel.Image,
                LastName = technicalStaffModel.LastName,
                NationalCode = technicalStaffModel.NationalCode,
                Id = technicalStaffModel.Id
            };

            var similarParticipationIds =
                await _participationService.GetSimilarParticipationSport(technicalStaffModel.ParticipationId,
                Convert.ToInt32(User.Identity.Name));

            foreach (var participationId in similarParticipationIds)
            {
                _technicalStaffService.Add(technicalStaff, participationId, technicalStaffModel.TechnicalStaffRoleId);
            }

            await _dbContext.SaveChangesAsync();

            return new HttpStatusCodeResult(HttpStatusCode.OK);
        }
        // GET: TechnicalStaff/UserPanel
        public async Task<ActionResult> Add(TechnicalStaffViewModel technicalStaffModel, int competitionId)
        {
            var canAddTechnicalStaff = await _competitionService
               .CanAddCommonTechnicalStaff(competitionId, Convert.ToInt32(User.Identity.Name));

            if (!canAddTechnicalStaff)
            {
                ModelState.AddModelError("", "امکان درج کادر اجرایی جدید وجود ندارد.");
                return this.JsonValidationErrors();
            }


            var tmpPath = Server.MapPath("~/App_Data/tmp/");


            var fullName = string.Format("{0}-{1}", technicalStaffModel.FirstName, technicalStaffModel.LastName).ApplyCorrectYeKe();


            var userImagePath = Server.MapPath("~/App_Data/TechnicalStaff_Image/");

            await
                CopyFileAsync(tmpPath + technicalStaffModel.Image,
                    userImagePath + string.Format("{0}-{1}", fullName, technicalStaffModel.Image));

            technicalStaffModel.Image = string.Format("{0}-{1}", fullName, technicalStaffModel.Image);


            var technicalStaff = new DomainClasses.TechnicalStaff
            {
                FirstName = technicalStaffModel.FirstName,
                BirthDate = technicalStaffModel.BirthDate,
                FatherName = technicalStaffModel.FatherName,
                Image = technicalStaffModel.Image,
                LastName = technicalStaffModel.LastName,
                NationalCode = technicalStaffModel.NationalCode,
                Id = technicalStaffModel.Id,
                MobileNumber = technicalStaffModel.MobileNumber
            };

            _commonTechnicalStaffService.Add(technicalStaff, Convert.ToInt32(User.Identity.Name),
                competitionId,
                technicalStaffModel.TechnicalStaffRoleId);

            await _dbContext.SaveChangesAsync();

            return new HttpStatusCodeResult(HttpStatusCode.OK);
        }
        public async Task<ActionResult> Edit(TechnicalStaffViewModel technicalStaffModel)
        {

            var selectedTechnicalStaff = await _technicalStaffService.Find(technicalStaffModel.Id);

            var userId = Convert.ToInt32(User.Identity.Name);

            if (selectedTechnicalStaff.IsApproved == null || selectedTechnicalStaff.IsApproved == true)
            {
                var canEdit = await _participationService.CanEditPerson(technicalStaffModel.ParticipationId, userId);

                if (!canEdit)
                {
                    ModelState.AddModelError("", "امکان ویرایش کادر فنی وجود ندارد.");
                    return this.JsonValidationErrors();
                }

            }
            else
            {
                var canEdit = await _participationService.CanEditRejectedPerson(technicalStaffModel.ParticipationId, userId);
                if (!canEdit)
                {
                    ModelState.AddModelError("", "امکان ویرایش کادر فنی وجود ندارد.");
                    return this.JsonValidationErrors();
                }
            }


            if (technicalStaffModel.Image != selectedTechnicalStaff.Image)
            {
                var tmpPath = Server.MapPath("~/App_Data/tmp/");

                var fullName = string.Format("{0}-{1}", technicalStaffModel.FirstName, technicalStaffModel.LastName).ApplyCorrectYeKe();

                var userImagePath = Server.MapPath("~/App_Data/TechnicalStaff_Image/");

                await
                    CopyFileAsync(tmpPath + technicalStaffModel.Image,
                        userImagePath + string.Format("{0}-{1}", fullName, technicalStaffModel.Image));
                try
                {
                    System.IO.File.Delete(userImagePath + selectedTechnicalStaff.Image);
                }
                catch (Exception)
                {
                }

                selectedTechnicalStaff.Image = string.Format("{0}-{1}", fullName, technicalStaffModel.Image);
            }

            selectedTechnicalStaff.FirstName = technicalStaffModel.FirstName;
            selectedTechnicalStaff.LastName = technicalStaffModel.LastName;
            selectedTechnicalStaff.FatherName = technicalStaffModel.FatherName;
            selectedTechnicalStaff.NationalCode = technicalStaffModel.NationalCode;
            selectedTechnicalStaff.BirthDate = technicalStaffModel.BirthDate;

            selectedTechnicalStaff.IsApproved = null;


            var selectedParticipationTechnicalStaff = await _technicalStaffService.GetParticipationTechnicalStaff(technicalStaffModel.ParticipationId, technicalStaffModel.Id);


            if (technicalStaffModel.TechnicalStaffRoleId != selectedParticipationTechnicalStaff.TechnicalStaffRoleId)
                selectedParticipationTechnicalStaff.TechnicalStaffRoleId = technicalStaffModel.TechnicalStaffRoleId;


            await _dbContext.SaveChangesAsync();

            return new HttpStatusCodeResult(HttpStatusCode.OK);
        }