public int PostFAdetailEntities(FAdetailEntities faDetailEntities)
        {
            try
            {
                IFAdetailOperations               faDetailOperations            = new FAdetailOperations();
                IFAaddressDetailOperations        faAddressDetailOperation      = new FAaddressDetailOperations();
                IFAeducationDetailOperations      faEducationDetailOperation    = new FAeducationDetailOperations();
                IFAexperianceDetailOperations     faExperienceDetailOperation   = new FAexperianceDetailOperations();
                IFAtargetOperations               faTargetOperation             = new FAtargetOperations();
                IFAtargetVillageMappingOperations targetVillageMappingOperation = new FAtargetVillageMappingOperations();
                IFAapprovalOperations             faApprovalOperation           = new FAapprovalOperations();

                IFAuploadedDocumentDetailOperations faUploadDocumentDetailOperations = new FAuploadedDocumentDetailOperations();

                FAdetail faDetail = new FAdetail();
                faDetail = MapEntities.Map <FAdetailEntities, FAdetail>(faDetailEntities);
                int faDetailId = faDetailOperations.InsertFAdetail(faDetail);

                FAaddressDetail faAddressDetail = new FAaddressDetail();
                faAddressDetail            = MapEntities.Map <FAaddressDetailEntities, FAaddressDetail>(faDetailEntities.AddressDetailEntities);
                faAddressDetail.FAdetailId = faDetailId;
                int faAddressDetailId = faAddressDetailOperation.InsertFAAddressDetail(faAddressDetail);

                IEnumerable <FAeducationDetail> faEducationDetailList = new List <FAeducationDetail>();
                faEducationDetailList = MapEntities.MapIEnumerableCollection <FAeducationDetailEntities, FAeducationDetail>(faDetailEntities.EducationDetailEntityList);
                faEducationDetailList.ToList().ForEach(x => x.FAid = faDetailId);
                faEducationDetailList = faEducationDetailOperation.InsertFAeducationDetail(faEducationDetailList);

                IEnumerable <FAexperianceDetail> faExperienceDetailList = new List <FAexperianceDetail>();
                faExperienceDetailList = MapEntities.MapIEnumerableCollection <FAexperianceDetailEntities, FAexperianceDetail>(faDetailEntities.ExperienceDetailEntityList);
                faExperienceDetailList.ToList().ForEach(x => x.FAid = faDetailId);
                faExperienceDetailList = faExperienceDetailOperation.InsertFAexperienceDetail(faExperienceDetailList);

                IEnumerable <FAtargetDetail> faTargetDetailList = new List <FAtargetDetail>();
                faTargetDetailList = MapEntities.MapIEnumerableCollection <FAtargetDetailEntities, FAtargetDetail>(faDetailEntities.TargetDetailEntityList);
                faTargetDetailList.ToList().ForEach(x => x.FAid = faDetailId);
                for (int faTargetEntityCount = 0; faTargetEntityCount < faDetailEntities.TargetDetailEntityList.Count(); faTargetEntityCount++)
                {
                    faTargetDetailList.ElementAt(faTargetEntityCount).FAtargetVillageMappings = MapEntities.MapIEnumerableCollection <FAtargetVillageMappingEntities, FAtargetVillageMapping>(faDetailEntities.TargetDetailEntityList.ElementAt(faTargetEntityCount).TargetCropsEntityMappingList).ToList();
                }
                faTargetDetailList = faTargetOperation.InsertTargetsForFA(faTargetDetailList);

                FAapproval faApproval = new FAapproval();
                faApproval      = MapEntities.Map <FAapprovalEntities, FAapproval>(faDetailEntities.ApprovalEntities);
                faApproval.FAid = faDetailId;
                faApproval      = faApprovalOperation.InsertFAapproval(faApproval);

                IEnumerable <FAuploadedDocumentDetail> fauploadDetailList = new List <FAuploadedDocumentDetail>();
                fauploadDetailList = MapEntities.MapIEnumerableCollection <FAuploadedDocumentDetailEntities, FAuploadedDocumentDetail>(faDetailEntities.UploadedDocumentList);
                fauploadDetailList.ToList().ForEach(x => x.FAid = faDetailId);
                fauploadDetailList = faUploadDocumentDetailOperations.InsertUploadedDocumentDetailIst(fauploadDetailList);

                return(faDetailId);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public int InsertFAAddressDetail(FAaddressDetail faAddressDetail)
 {
     try
     {
         db.FAaddressDetails.Add(faAddressDetail);
         db.SaveChanges();
         return(faAddressDetail.Id);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        public int UpdateFAaddressDetail(List <FAaddressDetail> addressDetailList)
        {
            try
            {
                int faId = addressDetailList.ElementAt(0).FAdetailId.Value;
                List <FAaddressDetail> ExistingAddressList = db.FAaddressDetails.Select(x => x).Where(x => x.FAdetailId == faId).ToList();

                List <FAaddressDetail> AddressListToAdd    = new List <FAaddressDetail>();
                List <FAaddressDetail> AddressListToUpdate = new List <FAaddressDetail>();
                List <FAaddressDetail> AddressListToDelete = new List <FAaddressDetail>();

                foreach (var address in addressDetailList)
                {
                    FAaddressDetail newAddress = ExistingAddressList.Select(x => x).Where(x => x.Id == address.Id).FirstOrDefault();
                    if (newAddress == null)
                    {
                        AddressListToAdd.Add(address);
                    }
                    else
                    {
                        AddressListToUpdate.Add(address);
                    }
                }
                foreach (var address in ExistingAddressList)
                {
                    FAaddressDetail existingAddress = addressDetailList.Select(x => x).Where(x => x.Id == address.Id).FirstOrDefault();
                    if (existingAddress == null)
                    {
                        AddressListToDelete.Add(address);
                    }
                }

                foreach (var address in AddressListToAdd)
                {
                    InsertFAAddressDetail(address);
                }
                foreach (var address in AddressListToDelete)
                {
                    //RemoveFAaddressDetail(address.Id);
                    FAaddressDetail adddtl = db.FAaddressDetails.Select(x => x).Where(x => x.Id == address.Id).FirstOrDefault();
                    db.FAaddressDetails.Remove(adddtl);
                }
                FAaddressDetail addressToUpdate;
                foreach (var address in AddressListToUpdate)
                {
                    addressToUpdate = ExistingAddressList.Select(x => x).Where(x => x.Id == address.Id).FirstOrDefault();
                    if (addressToUpdate != null)
                    {
                        addressToUpdate.Address       = address.Address;
                        addressToUpdate.ContactNo     = address.ContactNo;
                        addressToUpdate.District      = address.District;
                        addressToUpdate.EmailId       = address.EmailId;
                        addressToUpdate.MobileNo      = address.MobileNo;
                        addressToUpdate.Pincode       = address.Pincode;
                        addressToUpdate.SubDistrictId = address.SubDistrictId;
                        addressToUpdate.Village       = address.Village;
                    }
                }
                return(db.SaveChanges());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }